Commit e56c1cf
Add new SnowflakeCatalog implementation to enable directly using Snowflake-managed Iceberg tables (apache#6428)
* Initial read-only Snowflake Catalog implementation by @sfc-gh-mparmar (#1)
Initial read-only Snowflake Catalog implementation built on top of the Snowflake JDBC driver,
providing support for basic listing of namespaces, listing of tables, and loading/reads of tables.
Auth options are passthrough to the JDBC driver.
Co-authored-by: Maninder Parmar <maninder.parmar@snowflake.com>
Co-authored-by: Maninder Parmar <maninder.parmar+oss@snowflake.com>
Co-authored-by: Dennis Huo <dennis.huo+oss@snowflake.com>
* Add JdbcSnowflakeClientTest using mocks (#2)
Add JdbcSnowflakeClientTest using mocks; provides full coverage of JdbcSnowflakeClient
and entities' ResultSetHandler logic.
Also update target Spark runtime versions to be included.
* Add test { useJUnitPlatform() } tuple to iceberg-snowflake for
consistency and future interoperability with inheriting from abstact
unittest base classes.
* Extract versions into versions.props per PR review
* Misc test-related refactors per review suggestions
-Convert unittests to all use assertj/Assertions for "fluent assertions"
-Refactor test injection into overloaded initialize() method
-Add test cases for close() propagation
-Use CloseableGroup.
* Fix unsupported behaviors of loadNamedpaceMetadata and defaultWarehouseLocation
* Move TableIdentifier checks out of newTableOps into the
SnowflakTableOperations class itself, add test case.
* Refactor out any Namespace-related business logic from the lower
SnowflakeClient/JdbcSnowflakeClient layers and merge SnowflakeTable
and SnowflakeSchema into a single SnowflakeIdentifier that also
encompasses ROOT and DATABASE level identifiers.
A SnowflakeIdentifier thus functions like a type-checked/constrained
Iceberg TableIdentifier, and eliminates any tight coupling between
a SnowflakeClient and Catalog business logic.
Parsing of Namespace numerical levels into a SnowflakeIdentifier
is now fully encapsulated in NamespaceHelpers so that callsites
don't duplicate namespace-handling/validation logic.
* Finish migrating JdbcSnowflakeClientTest off any usage of org.junit.Assert
in favor of assertj's Assertions.
* Style refactorings from review comments, expanded and moved InMemoryFileIO into core
with its own unittest.
* Fix behavior of getNamespaceMetadata to throw when the namespace doesn't
exist.
Refactor for naming conventions and consolidating identifier
handling into NamespaceHandlers.
Make FileIO instantiated fresh for each newTableOps call.
* Move private constructor to top, add assertion to test case.
* Define minimal ResultSetParser/QueryHarness classes to fully replace
any use of commons-dbutils; refactor ResultSet handling fully into
JdbcSnowflakeClient.java.
* Update snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeTableOperations.java
Co-authored-by: Eduard Tudenhöfner <etudenhoefner@gmail.com>
* Refactor style suggestions; remove debug-level logging, arguments in exceptions,
private members if not accessed outside, move precondition checks, add test for
NamespaceHelpers.
* Fix precondition messages, remove getConf()
* Clean up varargs.
* Make data members final, include rawJsonVal in toString for debuggability.
* Combine some small test cases into roundtrip test cases, misc cleanup
* Add comment for why a factory class is exposed for testing purposes.
Co-authored-by: Dennis Huo <dennis.huo@snowflake.com>
Co-authored-by: Maninder Parmar <maninder.parmar@snowflake.com>
Co-authored-by: Maninder Parmar <maninder.parmar+oss@snowflake.com>
Co-authored-by: Eduard Tudenhöfner <etudenhoefner@gmail.com>1 parent 7943e94 commit e56c1cf
File tree
19 files changed
+2415
-4
lines changed- .github
- core/src/main/java/org/apache/iceberg/jdbc
- snowflake/src
- main/java/org/apache/iceberg/snowflake
- test/java/org/apache/iceberg/snowflake
- spark
- v3.1
- v3.2
- v3.3
19 files changed
+2415
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
697 | 697 | | |
698 | 698 | | |
699 | 699 | | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
700 | 718 | | |
701 | 719 | | |
702 | 720 | | |
| |||
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
30 | | - | |
| 30 | + | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
0 commit comments