lowka commented on code in PR #6530: URL: https://github.com/apache/ignite-3/pull/6530#discussion_r2343365555
########## modules/jdbc/src/main/java/org/apache/ignite/internal/jdbc2/JdbcResultSet.java: ########## @@ -0,0 +1,1809 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ignite.internal.jdbc2; + +import java.io.InputStream; +import java.io.Reader; +import java.math.BigDecimal; +import java.net.URL; +import java.sql.Array; +import java.sql.Blob; +import java.sql.Clob; +import java.sql.Date; +import java.sql.NClob; +import java.sql.Ref; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.RowId; +import java.sql.SQLException; +import java.sql.SQLFeatureNotSupportedException; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Statement; +import java.sql.Time; +import java.sql.Timestamp; +import java.util.Calendar; +import java.util.Map; +import org.apache.ignite.internal.jdbc.proto.SqlStateCode; +import org.apache.ignite.internal.lang.IgniteExceptionMapperUtil; +import org.apache.ignite.internal.util.IgniteUtils; +import org.apache.ignite.sql.ResultSetMetadata; +import org.apache.ignite.sql.SqlRow; + +/** + * JDBC ResultSet adapter backed by {@link org.apache.ignite.sql.ResultSet}. + */ +public class JdbcResultSet implements ResultSet { + + private static final String UPDATES_ARE_NOT_SUPPORTED = "Updates are not supported."; + + private static final String SQL_STRUCTURED_TYPE_ARE_NOT_SUPPORTED = "SQL structured type are not supported."; + + private static final String SQL_SPECIFIC_TYPES_ARE_NOT_SUPPORTED = "SQL-specific types are not supported."; + + private final org.apache.ignite.sql.ResultSet<SqlRow> rs; + + private final Statement statement; + + private Map<String, Integer> columnOrder; + + private int fetchSize; + + private SqlRow currentRow; + + private int currentPosition; + + private boolean closed; + + private boolean wasNull; + + private JdbcResultSetMetadata meta; + + /** + * Constructor. + */ + public JdbcResultSet( + org.apache.ignite.sql.ResultSet<SqlRow> rs, + Statement statement + ) { + this.rs = rs; + this.statement = statement; + this.currentRow = null; + this.closed = false; + this.wasNull = false; + } + + @Override + public boolean next() throws SQLException { + ensureNotClosed(); + + try { + if (!rs.hasNext()) { + currentRow = null; + return false; + } + currentRow = rs.next(); + currentPosition += 1; + return true; + } catch (Exception e) { + Throwable cause = IgniteExceptionMapperUtil.mapToPublicException(e); + throw new SQLException(cause.getMessage(), cause); + } + } + + @Override + public void close() throws SQLException { + if (closed) { + return; + } + closed = true; + + try { + rs.close(); + } catch (Exception e) { + Throwable cause = IgniteExceptionMapperUtil.mapToPublicException(e); + throw new SQLException(cause.getMessage(), cause); + } + } + + /** {@inheritDoc} */ + @Override + public boolean wasNull() throws SQLException { + ensureNotClosed(); + + return wasNull; + } + + /** {@inheritDoc} */ + @Override + public String getString(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public String getString(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public boolean getBoolean(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public boolean getBoolean(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public byte getByte(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public byte getByte(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public short getShort(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public short getShort(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public int getInt(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public int getInt(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public long getLong(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public long getLong(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public float getFloat(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public float getFloat(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public double getDouble(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public double getDouble(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public BigDecimal getBigDecimal(int colIdx, int scale) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public BigDecimal getBigDecimal(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public BigDecimal getBigDecimal(String colLb, int scale) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public BigDecimal getBigDecimal(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public byte[] getBytes(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public byte[] getBytes(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Date getDate(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Date getDate(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Date getDate(int colIdx, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Date getDate(String colLb, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Time getTime(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Time getTime(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Time getTime(int colIdx, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Time getTime(String colLb, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Timestamp getTimestamp(int colIdx) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Timestamp getTimestamp(int colIdx, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + return getTimestamp(colIdx); + } + + /** {@inheritDoc} */ + @Override + public Timestamp getTimestamp(String colLb, Calendar cal) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public Timestamp getTimestamp(String colLb) throws SQLException { + ensureNotClosed(); + ensureHasCurrentRow(); + + throw new UnsupportedOperationException(); + } + + /** {@inheritDoc} */ + @Override + public InputStream getAsciiStream(int colIdx) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Streams are not supported."); + } + + /** {@inheritDoc} */ + @Override + public InputStream getAsciiStream(String colLb) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Streams are not supported."); + } + + /** {@inheritDoc} */ + @Override + public InputStream getUnicodeStream(int colIdx) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Streams are not supported."); + } + + /** {@inheritDoc} */ + @Override + public InputStream getUnicodeStream(String colLb) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Streams are not supported."); + } + + /** {@inheritDoc} */ + @Override + public InputStream getBinaryStream(int colIdx) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Stream are not supported."); + } + + /** {@inheritDoc} */ + @Override + public InputStream getBinaryStream(String colLb) throws SQLException { + ensureNotClosed(); + + throw new SQLFeatureNotSupportedException("Streams are not supported."); + } + + /** {@inheritDoc} */ + @Override + public SQLWarning getWarnings() throws SQLException { + ensureNotClosed(); + + return null; + } + + /** {@inheritDoc} */ + @Override + public void clearWarnings() throws SQLException { + ensureNotClosed(); + } + + /** {@inheritDoc} */ + @Override + public String getCursorName() throws SQLException { + ensureNotClosed(); + + return null; + } + + /** {@inheritDoc} */ + @Override + public ResultSetMetaData getMetaData() throws SQLException { + ensureNotClosed(); + + return initMetadata(); + } + + /** {@inheritDoc} */ + @Override + public int findColumn(String colLb) throws SQLException { + ensureNotClosed(); + + Integer order = colLb != null ? columnOrder().get(colLb.toUpperCase()) : null; Review Comment: Replaced with metadata.indexOf add filed an issue https://issues.apache.org/jira/browse/IGNITE-26420 with when ResultSetMetdata.indexOf(column.name()) fails with illegal argument exception. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
