nastra commented on code in PR #10111: URL: https://github.com/apache/iceberg/pull/10111#discussion_r1565738304
########## core/src/test/java/org/apache/iceberg/jdbc/TestJdbcCatalog.java: ########## @@ -1024,7 +1028,49 @@ public void report(MetricsReport report) { } } + private String createMetadataLocationViaJdbcCatalog(TableIdentifier identifier) + throws SQLException { + // temporary connection just to actually create a concrete metadata location + String jdbcUrl = null; + try { + java.nio.file.Path dbFile = Files.createTempFile("temp", "metadata"); + jdbcUrl = "jdbc:sqlite:" + dbFile.toAbsolutePath(); + } catch (IOException e) { + throw new SQLException("Error while creating temp data", e); + } + + Map<String, String> properties = Maps.newHashMap(); + + properties.put(CatalogProperties.URI, jdbcUrl); + + warehouseLocation = this.tableDir.toAbsolutePath().toString(); + properties.put(CatalogProperties.WAREHOUSE_LOCATION, warehouseLocation); + properties.put("type", "jdbc"); + + JdbcCatalog jdbcCatalog = + (JdbcCatalog) CatalogUtil.buildIcebergCatalog("TEMP", properties, conf); + jdbcCatalog.buildTable(identifier, SCHEMA).create(); + + SQLiteDataSource dataSource = new SQLiteDataSource(); + dataSource.setUrl(jdbcUrl); + + try (Connection connection = dataSource.getConnection()) { + ResultSet result = + connection + .prepareStatement("SELECT * FROM " + JdbcUtil.CATALOG_TABLE_VIEW_NAME) + .executeQuery(); + result.next(); + return result.getString(JdbcTableOperations.METADATA_LOCATION_PROP); + } + } + private void initLegacySchema(String jdbcUrl) throws SQLException { + TableIdentifier table1 = TableIdentifier.of(Namespace.of("namespace1"), "table1"); + TableIdentifier table2 = TableIdentifier.of(Namespace.of("namespace2"), "table2"); + + String table1MetadataLocation = createMetadataLocationViaJdbcCatalog(table1); Review Comment: I don't have a strong opinion here but I think to get the `legacy` schema we might want to consider creating the table via the Catalog API and then dropping the `iceberg_type` field. It seems a bit odd to actually create the table just to fetch its metadata location so that we can insert it here. I'm curious what others think here /cc @amogh-jahagirdar @danielcweeks -- 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: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org