-
Notifications
You must be signed in to change notification settings - Fork 171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FLINK-37288] Add Google Cloud Spanner dialect and catalog #156
base: main
Are you sure you want to change the base?
[FLINK-37288] Add Google Cloud Spanner dialect and catalog #156
Conversation
Thanks for opening this pull request! Please check out our contributing guidelines. (https://flink.apache.org/contributing/how-to-contribute.html) |
this.connectionProperties = Preconditions.checkNotNull(connectionProperties); | ||
checkArgument( | ||
!StringUtils.isNullOrWhitespaceOnly(connectionProperties.getProperty(USER_KEY))); | ||
checkArgument( | ||
!StringUtils.isNullOrWhitespaceOnly( | ||
connectionProperties.getProperty(PASSWORD_KEY))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spanner does not use password authentication.
/** | ||
* URL has to be without database, like "jdbc:dialect://localhost:1234/" or | ||
* "jdbc:dialect://localhost:1234" rather than "jdbc:dialect://localhost:1234/db". | ||
*/ | ||
protected static void validateJdbcUrl(String url) { | ||
String[] parts = url.trim().split("\\/+"); | ||
|
||
checkArgument(parts.length == 2); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the case of Spanner, the URL is as follows, so I have deleted this validation.
jdbc:cloudspanner://hostname/projects/gcp_project_id/instances/instance_id/databases/database_id
|
||
/** Test for {@link AbstractJdbcCatalog}. */ | ||
class AbstractJdbcCatalogTest { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This class is no longer needed because URL validation has been removed.
@@ -120,7 +122,7 @@ public int[] getTableTypes() { | |||
.toArray(); | |||
} | |||
|
|||
public Schema getTableSchema() { | |||
public Schema getTableSchema(String pkConstraintName) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the case of Spanner, the contract name of the primary key is different, so it is possible to specify the contract name of the primary key.
c7f0a5a
to
3a73e0b
Compare
3a73e0b
to
be60494
Compare
I have applied code formatting using Spotless and updated the documentation. It is ready for review. |
e4559c9
to
4ec422d
Compare
4ec422d
to
520db3b
Compare
| Db2 | `com.ibm.db2.jcc` | `db2jcc` | [Download](https://www.ibm.com/support/pages/download-db2-fix-packs-version-db2-linux-unix-and-windows) | | ||
| Trino | `io.trino` | `trino-jdbc` | [Download](https://repo1.maven.org/maven2/io/trino/trino-jdbc/) | | ||
| OceanBase | `com.oceanbase` | `oceanbase-client` | [Download](https://repo1.maven.org/maven2/com/oceanbase/oceanbase-client/) | | ||
| Spanner | `com.google.cloud` | `google-cloud-spanner-jdbc` | [Download](https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner-jdbc) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see the download url points to Maven like the spanner doc. How do I get the jar file?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have written the same URL as the official document.
The Jar files can be downloaded from the following.
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-spanner-jdbc/2.27.1/
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-spanner-jdbc/2.27.1/google-cloud-spanner-jdbc-2.27.1-single-jar-with-dependencies.jar
- https://repo1.maven.org/maven2/com/google/cloud/google-cloud-spanner-jdbc/2.27.1/google-cloud-spanner-jdbc-2.27.1.jar
@@ -702,7 +708,7 @@ SELECT * FROM given_database.test_table2; | |||
|
|||
Data Type Mapping | |||
---------------- | |||
Flink supports connect to several databases which uses dialect like MySQL, Oracle, PostgreSQL, CrateDB, Derby, SQL Server, Db2 and OceanBase. The Derby dialect usually used for testing purpose. The field data type mappings from relational databases data types to Flink SQL data types are listed in the following table, the mapping table can help define JDBC table in Flink easily. | |||
Flink supports connect to several databases which uses dialect like MySQL, Oracle, PostgreSQL, CrateDB, Derby, SQL Server, Db2, OceanBase and Spanner. The Derby dialect usually used for testing purpose. The field data type mappings from relational databases data types to Flink SQL data types are listed in the following table, the mapping table can help define JDBC table in Flink easily. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nits:
connect -> the connection
which uses dialect like -> using dialects e.g.
The Derby dialect usually used for testing purpose. -> The Derby dialect is usually used for testing purpose.
JDBC table -> a JDBC table
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed: 3c7d225
https://issues.apache.org/jira/browse/FLINK-37288