private Object getNetezzaDateValueWorkaround( DatabaseInterface databaseInterface, ResultSet resultSet, int index ) throws SQLException, KettleDatabaseException { Object data = null; int type = resultSet.getMetaData().getColumnType( index ); switch ( type ) { case Types.TIME: { data = resultSet.getTime( index ); break; } default: { data = resultSet.getDate( index ); } } return data; }
/** * Implementation of ResultSetCallbackHandler. * Work out column size if this is the first row, otherwise just count rows. * <p>Subclasses can perform custom extraction or processing * by overriding the {@code processRow(ResultSet, int)} method. * @see #processRow(java.sql.ResultSet, int) */ @Override public final void processRow(ResultSet rs) throws SQLException { if (this.rowCount == 0) { ResultSetMetaData rsmd = rs.getMetaData(); this.columnCount = rsmd.getColumnCount(); this.columnTypes = new int[this.columnCount]; this.columnNames = new String[this.columnCount]; for (int i = 0; i < this.columnCount; i++) { this.columnTypes[i] = rsmd.getColumnType(i + 1); this.columnNames[i] = JdbcUtils.lookupColumnName(rsmd, i + 1); } // could also get column names } processRow(rs, this.rowCount++); }
public static void printResultSet(ResultSet rs, PrintStream out, boolean printHeader, String seperator) throws SQLException { ResultSetMetaData metadata = rs.getMetaData(); int columnCount = metadata.getColumnCount(); if (printHeader) { for (int columnIndex = 1; columnIndex <= columnCount; ++columnIndex) { out.print(seperator); out.print(metadata.getColumnName(columnIndex)); int type = metadata.getColumnType(columnIndex);
@Test public void testConvertToAvroStreamForShort() throws SQLException, IOException { final ResultSetMetaData metadata = mock(ResultSetMetaData.class); when(metadata.getColumnCount()).thenReturn(1); when(metadata.getColumnType(1)).thenReturn(Types.TINYINT); when(metadata.getColumnName(1)).thenReturn("t_int"); when(metadata.getTableName(1)).thenReturn("table"); final ResultSet rs = resultSetReturningMetadata(metadata); final short s = 25; when(rs.getObject(Mockito.anyInt())).thenReturn(s); final InputStream instream = convertResultSetToAvroInputStream(rs); final DatumReader<GenericRecord> datumReader = new GenericDatumReader<>(); try (final DataFileStream<GenericRecord> dataFileReader = new DataFileStream<>(instream, datumReader)) { GenericRecord record = null; while (dataFileReader.hasNext()) { record = dataFileReader.next(record); assertEquals(Short.toString(s), record.get("t_int").toString()); } } }
@Test public void testMultipathOfDomainForConnection() throws SQLException { Driver driver = new DummyDriver(); Connection conn = driver.connect("jdbc:kylin://test_url/kylin/test_db/", null); Statement state = conn.createStatement(); ResultSet resultSet = state.executeQuery("select * from test_table where url not in ('http://a.b.com/?a=b') limit 1"); ResultSetMetaData metadata = resultSet.getMetaData(); assertEquals(12, metadata.getColumnType(1)); assertEquals("varchar", metadata.getColumnTypeName(1)); assertEquals(1, metadata.isNullable(1)); while (resultSet.next()) { assertEquals("foo", resultSet.getString(1)); assertEquals("bar", resultSet.getString(2)); assertEquals("tool", resultSet.getString(3)); } resultSet.close(); state.close(); conn.close(); }
public PostgreSQLColumnDescription(final ResultSetMetaData resultSetMetaData, final int columnIndex) throws SQLException { columnName = resultSetMetaData.getColumnName(columnIndex); this.columnIndex = columnIndex; typeOID = PostgreSQLColumnType.valueOfJDBCType(resultSetMetaData.getColumnType(columnIndex)).getValue(); columnLength = resultSetMetaData.getColumnDisplaySize(columnIndex); } }
ResultSetMetaData rsmd = resultSet.getMetaData(); int i = 2; for (; i <= numMaxValueColumns + 1; i++) { String resultColumnName = (StringUtils.isNotEmpty(rsmd.getColumnLabel(i)) ? rsmd.getColumnLabel(i) : rsmd.getColumnName(i)).toLowerCase(); String fullyQualifiedStateKey = getStateKey(tableName, resultColumnName, dbAdapter); String resultColumnCurrentMax = statePropertyMap.get(fullyQualifiedStateKey); int type = rsmd.getColumnType(i); if (isDynamicTableName) {
for (int i = 0, size = meta.getColumnCount(); i < size; ++i) { if (i != 0) { buf.append(", "); int type = meta.getColumnType(columnIndex);
ResultSetMetaData meta = rs.getMetaData(); int cols = meta.getColumnCount(); if (cols == 0) { return; ColumnInfo ci = new ColumnInfo(meta.getColumnName(i), meta.getColumnType(i), meta.getPrecision(i), meta.getScale(i)); info[i - 1] = ci;
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD); PreparedStatement statement = connection.prepareStatement(JDBC_SELECT); ResultSet rs = statement.executeQuery(); PrintStream out = System.out; if (rs != null) { while (rs.next()) { ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { if (i > 1) { out.print(","); } int type = rsmd.getColumnType(i); if (type == Types.VARCHAR || type == Types.CHAR) { out.print(rs.getString(i)); } else { out.print(rs.getLong(i)); } } out.println(); } }
@Test public void testConvertToAvroStreamForNumbers() throws SQLException, IOException { final ResultSetMetaData metadata = mock(ResultSetMetaData.class); when(metadata.getColumnCount()).thenReturn(1); when(metadata.getColumnType(1)).thenReturn(testParams.sqlType); when(metadata.isSigned(1)).thenReturn(testParams.signed); when(metadata.getPrecision(1)).thenReturn(testParams.precision); when(metadata.getColumnName(1)).thenReturn("t_int"); when(metadata.getTableName(1)).thenReturn("table"); final ResultSet rs = resultSetReturningMetadata(metadata); final int ret = 0; when(rs.getObject(Mockito.anyInt())).thenReturn(ret); final InputStream instream = convertResultSetToAvroInputStream(rs); final DatumReader<GenericRecord> datumReader = new GenericDatumReader<>(); try (final DataFileStream<GenericRecord> dataFileReader = new DataFileStream<>(instream, datumReader)) { GenericRecord record = null; while (dataFileReader.hasNext()) { record = dataFileReader.next(record); assertEquals(Integer.toString(ret), record.get("t_int").toString()); } } } }
private void printValue(ResultSet rs, int col, PrintStream out) throws SQLException { if (rawBlobs && rs.getMetaData().getColumnType(col) == Types.BLOB) { Blob blob = rs.getBlob(col); if (blob != null) { new StreamPumper(rs.getBlob(col).getBinaryStream(), out).run(); } } else { out.print(maybeQuote(rs.getString(col))); } }
@Test public void testPreparedStatementWithMockData() throws SQLException { Driver driver = new DummyDriver(); Connection conn = driver.connect("jdbc:kylin://test_url/test_db", null); PreparedStatement state = conn.prepareStatement("select * from test_table where id=?"); state.setInt(1, 10); ResultSet resultSet = state.executeQuery(); ResultSetMetaData metadata = resultSet.getMetaData(); assertEquals(12, metadata.getColumnType(1)); assertEquals("varchar", metadata.getColumnTypeName(1)); assertEquals(1, metadata.isNullable(1)); while (resultSet.next()) { assertEquals("foo", resultSet.getString(1)); assertEquals("bar", resultSet.getString(2)); assertEquals("tool", resultSet.getString(3)); } resultSet.close(); state.close(); conn.close(); }
public ColumnDefinition41Packet(final int sequenceId, final ResultSetMetaData resultSetMetaData, final int columnIndex) throws SQLException { this(sequenceId, resultSetMetaData.getSchemaName(columnIndex), resultSetMetaData.getTableName(columnIndex), resultSetMetaData.getTableName(columnIndex), resultSetMetaData.getColumnLabel(columnIndex), resultSetMetaData.getColumnName(columnIndex), resultSetMetaData.getColumnDisplaySize(columnIndex), ColumnType.valueOfJDBCType(resultSetMetaData.getColumnType(columnIndex)), resultSetMetaData.getScale(columnIndex)); }
Util.sqlRS(conn, sql, rs -> { try { ResultSetMetaData rsd = rs.getMetaData(); int columnCount = rsd.getColumnCount(); for (int i = 1; i <= columnCount; i++) { columnTypeTmp.put(rsd.getColumnName(i).toLowerCase(), rsd.getColumnType(i));
private void checkRepresentation(String expression, int expectedSqlType, ResultAssertion assertion) throws Exception { try (ResultSet rs = statement.executeQuery("SELECT " + expression)) { ResultSetMetaData metadata = rs.getMetaData(); assertEquals(metadata.getColumnCount(), 1); assertEquals(metadata.getColumnType(1), expectedSqlType); assertTrue(rs.next()); assertion.accept(rs, 1); assertFalse(rs.next()); } }
@Test public void testConvertToAvroStreamForUnsignedIntegerWithPrecision10() throws SQLException, IOException { final String mockColumnName = "t_int"; final ResultSetMetaData metadata = mock(ResultSetMetaData.class); when(metadata.getColumnCount()).thenReturn(1); when(metadata.getColumnType(1)).thenReturn(Types.INTEGER); when(metadata.isSigned(1)).thenReturn(false); when(metadata.getPrecision(1)).thenReturn(10); when(metadata.getColumnName(1)).thenReturn(mockColumnName); when(metadata.getTableName(1)).thenReturn("table"); final ResultSet rs = resultSetReturningMetadata(metadata); final Long ret = 0L; when(rs.getObject(Mockito.anyInt())).thenReturn(ret); final InputStream instream = convertResultSetToAvroInputStream(rs); final DatumReader<GenericRecord> datumReader = new GenericDatumReader<>(); try (final DataFileStream<GenericRecord> dataFileReader = new DataFileStream<>(instream, datumReader)) { GenericRecord record = null; while (dataFileReader.hasNext()) { record = dataFileReader.next(record); assertEquals(Long.toString(ret), record.get(mockColumnName).toString()); } } }
@Override public void handleGeneratedKeys(PreparedStatement ps, LongConsumer longConsumer) throws SQLException { /* * There does not seem to be any way to find the generated keys from a Postgres JDBC driver * since getGeneratedKeys() returns the whole set of columns. This causes * bug #293 "The postgresql throws an exception when the PRIMARY KEY is not type long." * * See http://stackoverflow.com/questions/19766816/postgresql-jdbc-getgeneratedkeys-returns-all-columns * * Below we instead handle auto generated fields that can be retrieved as Long. This fix clearly only * works for generated fields that are also auto generated. */ try (final ResultSet generatedKeys = ps.getGeneratedKeys()) { while (generatedKeys.next()) { final int columnType = generatedKeys.getMetaData().getColumnType(1); if (generatedKeys.getMetaData().isAutoIncrement(1) && LONG_GETTABLE_TYPES.contains(columnType)) { longConsumer.accept(generatedKeys.getLong(1)); //sqlStatement.addGeneratedKey(generatedKeys.getLong(1)); } } } }
@Test public void testStatementWithQuestionMask() throws SQLException { Driver driver = new DummyDriver(); Connection conn = driver.connect("jdbc:kylin://test_url/test_db", null); Statement state = conn.createStatement(); ResultSet resultSet = state.executeQuery("select * from test_table where url not in ('http://a.b.com/?a=b')"); ResultSetMetaData metadata = resultSet.getMetaData(); assertEquals(12, metadata.getColumnType(1)); assertEquals("varchar", metadata.getColumnTypeName(1)); assertEquals(1, metadata.isNullable(1)); while (resultSet.next()) { assertEquals("foo", resultSet.getString(1)); assertEquals("bar", resultSet.getString(2)); assertEquals("tool", resultSet.getString(3)); } resultSet.close(); state.close(); conn.close(); }
public ColumnDefinition41Packet(final int sequenceId, final ResultSetMetaData resultSetMetaData, final int columnIndex) throws SQLException { this(sequenceId, resultSetMetaData.getSchemaName(columnIndex), resultSetMetaData.getTableName(columnIndex), resultSetMetaData.getTableName(columnIndex), resultSetMetaData.getColumnLabel(columnIndex), resultSetMetaData.getColumnName(columnIndex), resultSetMetaData.getColumnDisplaySize(columnIndex), ColumnType.valueOfJDBCType(resultSetMetaData.getColumnType(columnIndex)), resultSetMetaData.getScale(columnIndex)); }