@Override public String getTableName(final int column) throws SQLException { return resultSetMetaData.getTableName(column); }
@Override public String getTableName(int column) throws InvalidResultSetAccessException { try { return this.resultSetMetaData.getTableName(column); } catch (SQLException se) { throw new InvalidResultSetAccessException(se); } }
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)); }
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)); }
@Override public String resultSetMetaData_getTableName(ResultSetMetaDataProxy metaData, int column) throws SQLException { if (this.pos < filterSize) { return nextFilter() .resultSetMetaData_getTableName(this, metaData, column); } return metaData.getResultSetMetaDataRaw() .getTableName(column); }
/** * 获取colName所在的行数 * * @param meta * 从连接中取出的ResultSetMetaData * @param colName * 字段名 * @return 所在的索引,如果不存在就抛出异常 * @throws SQLException * 指定的colName找不到 */ public static int getColumnIndex(ResultSetMetaData meta, String colName) throws SQLException { if (meta == null) return 0; int columnCount = meta.getColumnCount(); for (int i = 1; i <= columnCount; i++) if (meta.getColumnName(i).equalsIgnoreCase(colName)) return i; // TODO 尝试一下meta.getColumnLabel? log.debugf("Can not find @Column(%s) in table/view (%s)", colName, meta.getTableName(1)); throw Lang.makeThrow(SQLException.class, "Can not find @Column(%s)", colName); }
/** * @param rsMeta Metadata. * @return List of fields metadata. * @throws SQLException If failed. */ public static List<GridQueryFieldMetadata> meta(ResultSetMetaData rsMeta) throws SQLException { List<GridQueryFieldMetadata> meta = new ArrayList<>(rsMeta.getColumnCount()); for (int i = 1; i <= rsMeta.getColumnCount(); i++) { String schemaName = rsMeta.getSchemaName(i); String typeName = rsMeta.getTableName(i); String name = rsMeta.getColumnLabel(i); String type = rsMeta.getColumnClassName(i); int precision = rsMeta.getPrecision(i); int scale = rsMeta.getScale(i); if (type == null) // Expression always returns NULL. type = Void.class.getName(); meta.add(new H2SqlFieldMetadata(schemaName, typeName, name, type, precision, scale)); } return meta; }
for (int physicalColumn = 1, logicColumn = 1; physicalColumn <= metaData.getColumnCount(); physicalColumn++) { boolean isHidden = false; String tableName = metaData.getTableName(physicalColumn);
/** * 处理单条数据 * * @param <T> Entity及其子对象 * @param row Entity对象 * @param columnCount 列数 * @param meta ResultSetMetaData * @param rs 数据集 * @param withMetaInfo 是否包含表名、字段名等元信息 * @return 每一行的Entity * @throws SQLException SQL执行异常 * @since 3.3.1 */ public static <T extends Entity> T handleRow(T row, int columnCount, ResultSetMetaData meta, ResultSet rs, boolean withMetaInfo) throws SQLException { String columnLabel; int type; for (int i = 1; i <= columnCount; i++) { columnLabel = meta.getColumnLabel(i); type = meta.getColumnType(i); row.put(columnLabel, getColumnValue(rs, columnLabel, type, null)); } if (withMetaInfo) { row.setTableName(meta.getTableName(1)); row.setFieldNames(row.keySet()); } return row; }
/** * 处理单条数据 * * @param <T> Entity及其子对象 * @param row Entity对象 * @param columnCount 列数 * @param meta ResultSetMetaData * @param rs 数据集 * @param withMetaInfo 是否包含表名、字段名等元信息 * @return 每一行的Entity * @throws SQLException SQL执行异常 * @since 3.3.1 */ public static <T extends Entity> T handleRow(T row, int columnCount, ResultSetMetaData meta, ResultSet rs, boolean withMetaInfo) throws SQLException { String columnLabel; int type; for (int i = 1; i <= columnCount; i++) { columnLabel = meta.getColumnLabel(i); type = meta.getColumnType(i); row.put(columnLabel, getColumnValue(rs, columnLabel, type, null)); } if (withMetaInfo) { row.setTableName(meta.getTableName(1)); row.setFieldNames(row.keySet()); } return row; }
/** * @throws Exception If failed. */ @Test public void testResultSetMetaData() throws Exception { Statement stmt = DriverManager.getConnection(URL).createStatement(); ResultSet rs = stmt.executeQuery( "select p.name, o.id as orgId from \"pers\".Person p, \"org\".Organization o where p.orgId = o.id"); assert rs != null; ResultSetMetaData meta = rs.getMetaData(); assert meta != null; assert meta.getColumnCount() == 2; assert "Person".equalsIgnoreCase(meta.getTableName(1)); assert "name".equalsIgnoreCase(meta.getColumnName(1)); assert "name".equalsIgnoreCase(meta.getColumnLabel(1)); assert meta.getColumnType(1) == VARCHAR; assert "VARCHAR".equals(meta.getColumnTypeName(1)); assert "java.lang.String".equals(meta.getColumnClassName(1)); assert "Organization".equalsIgnoreCase(meta.getTableName(2)); assert "orgId".equalsIgnoreCase(meta.getColumnName(2)); assert "orgId".equalsIgnoreCase(meta.getColumnLabel(2)); assert meta.getColumnType(2) == INTEGER; assert "INTEGER".equals(meta.getColumnTypeName(2)); assert "java.lang.Integer".equals(meta.getColumnClassName(2)); }
@Test public void testCreateSchemaNoTableName() throws ClassNotFoundException, SQLException { final ResultSet resultSet = mock(ResultSet.class); final ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class); when(resultSet.getMetaData()).thenReturn(resultSetMetaData); when(resultSetMetaData.getColumnCount()).thenReturn(1); when(resultSetMetaData.getTableName(1)).thenReturn(""); when(resultSetMetaData.getColumnType(1)).thenReturn(Types.INTEGER); when(resultSetMetaData.getColumnName(1)).thenReturn("ID"); final Schema schema = JdbcCommon.createSchema(resultSet); assertNotNull(schema); // records name, should be result set first column table name assertEquals("NiFi_ExecuteSQL_Record", schema.getName()); }
/** * @throws Exception If failed. */ @Test public void testDecimalAndDateTypeMetaData() throws Exception { try (Connection conn = DriverManager.getConnection(BASE_URL)) { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery( "select t.decimal, t.date from \"metaTest\".MetaTest as t"); assert rs != null; ResultSetMetaData meta = rs.getMetaData(); assert meta != null; assert meta.getColumnCount() == 2; assert "METATEST".equalsIgnoreCase(meta.getTableName(1)); assert "DECIMAL".equalsIgnoreCase(meta.getColumnName(1)); assert "DECIMAL".equalsIgnoreCase(meta.getColumnLabel(1)); assert meta.getColumnType(1) == DECIMAL; assert "DECIMAL".equals(meta.getColumnTypeName(1)); assert "java.math.BigDecimal".equals(meta.getColumnClassName(1)); assert "METATEST".equalsIgnoreCase(meta.getTableName(2)); assert "DATE".equalsIgnoreCase(meta.getColumnName(2)); assert "DATE".equalsIgnoreCase(meta.getColumnLabel(2)); assert meta.getColumnType(2) == DATE; assert "DATE".equals(meta.getColumnTypeName(2)); assert "java.sql.Date".equals(meta.getColumnClassName(2)); } }
/** * @throws Exception If failed. */ @Test public void testResultSetMetaData() throws Exception { Connection conn = DriverManager.getConnection(URL); conn.setSchema("\"pers\""); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery( "select p.name, o.id as orgId from \"pers\".Person p, \"org\".Organization o where p.orgId = o.id"); assert rs != null; ResultSetMetaData meta = rs.getMetaData(); assert meta != null; assert meta.getColumnCount() == 2; assert "Person".equalsIgnoreCase(meta.getTableName(1)); assert "name".equalsIgnoreCase(meta.getColumnName(1)); assert "name".equalsIgnoreCase(meta.getColumnLabel(1)); assert meta.getColumnType(1) == VARCHAR; assert "VARCHAR".equals(meta.getColumnTypeName(1)); assert "java.lang.String".equals(meta.getColumnClassName(1)); assert "Organization".equalsIgnoreCase(meta.getTableName(2)); assert "orgId".equalsIgnoreCase(meta.getColumnName(2)); assert "orgId".equalsIgnoreCase(meta.getColumnLabel(2)); assert meta.getColumnType(2) == INTEGER; assert "INTEGER".equals(meta.getColumnTypeName(2)); assert "java.lang.Integer".equals(meta.getColumnClassName(2)); }
@Test public void test_getTableName_forViewGetsName() throws SQLException { assertThat( rowMetadata.getTableName( ordOptBOOLEAN ), anyOf( equalTo( VIEW_NAME ), equalTo( "" ) ) ); }
private void printResultSetMetaData(ResultSet rs) throws SQLException { ResultSetMetaData metadata = rs.getMetaData(); System.out.println("Metadata:"); for (int i = 0; i < metadata.getColumnCount(); i++) { String metaStr = metadata.getCatalogName(i + 1) + " " + metadata.getColumnClassName(i + 1) + " " + metadata.getColumnDisplaySize(i + 1) + " " + metadata.getColumnLabel(i + 1) + " " + metadata.getColumnName(i + 1) + " " + metadata.getColumnType(i + 1) + " " + metadata.getColumnTypeName(i + 1) + " " + metadata.getPrecision(i + 1) + " " + metadata.getScale(i + 1) + " " + metadata.getSchemaName(i + 1) + " " + metadata.getTableName(i + 1); System.out.println(metaStr); } } }
@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 testCreateSchemaOnlyColumnLabel() throws ClassNotFoundException, SQLException { final ResultSet resultSet = mock(ResultSet.class); final ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class); when(resultSet.getMetaData()).thenReturn(resultSetMetaData); when(resultSetMetaData.getColumnCount()).thenReturn(2); when(resultSetMetaData.getTableName(1)).thenReturn("TEST"); when(resultSetMetaData.getColumnType(1)).thenReturn(Types.INTEGER); when(resultSetMetaData.getColumnName(1)).thenReturn(""); when(resultSetMetaData.getColumnLabel(1)).thenReturn("ID"); when(resultSetMetaData.getColumnType(2)).thenReturn(Types.VARCHAR); when(resultSetMetaData.getColumnName(2)).thenReturn("VCHARC"); when(resultSetMetaData.getColumnLabel(2)).thenReturn("NOT_VCHARC"); final Schema schema = JdbcCommon.createSchema(resultSet); assertNotNull(schema); assertNotNull(schema.getField("ID")); assertNotNull(schema.getField("NOT_VCHARC")); // records name, should be result set first column table name assertEquals("TEST", schema.getName()); }
@Test public void testCreateSchemaNoColumns() throws ClassNotFoundException, SQLException { final ResultSet resultSet = mock(ResultSet.class); final ResultSetMetaData resultSetMetaData = mock(ResultSetMetaData.class); when(resultSet.getMetaData()).thenReturn(resultSetMetaData); when(resultSetMetaData.getColumnCount()).thenReturn(0); when(resultSetMetaData.getTableName(1)).thenThrow(SQLException.class); final Schema schema = JdbcCommon.createSchema(resultSet); assertNotNull(schema); // records name, should be result set first column table name // Notice! sql select may join data from different tables, other columns // may have different table names assertEquals("NiFi_ExecuteSQL_Record", schema.getName()); assertNull(schema.getField("ID")); }
/** * @throws Exception If failed. */ @Test public void testResultSetMetaData() throws Exception { try (Connection conn = DriverManager.getConnection(BASE_URL)) { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery( "select p.name, o.id as orgId from \"pers\".Person p, \"org\".Organization o where p.orgId = o.id"); assertNotNull(rs); ResultSetMetaData meta = rs.getMetaData(); assertNotNull(meta); assertEquals(2, meta.getColumnCount()); assertTrue("Person".equalsIgnoreCase(meta.getTableName(1))); assertTrue("name".equalsIgnoreCase(meta.getColumnName(1))); assertTrue("name".equalsIgnoreCase(meta.getColumnLabel(1))); assertEquals(VARCHAR, meta.getColumnType(1)); assertEquals("VARCHAR", meta.getColumnTypeName(1)); assertEquals("java.lang.String", meta.getColumnClassName(1)); assertTrue("Organization".equalsIgnoreCase(meta.getTableName(2))); assertTrue("orgId".equalsIgnoreCase(meta.getColumnName(2))); assertTrue("orgId".equalsIgnoreCase(meta.getColumnLabel(2))); assertEquals(INTEGER, meta.getColumnType(2)); assertEquals("INTEGER", meta.getColumnTypeName(2)); assertEquals("java.lang.Integer", meta.getColumnClassName(2)); } }