>From Peeyush Gupta <[email protected]>:
Peeyush Gupta has uploaded this change for review. (
https://asterix-gerrit.ics.uci.edu/c/asterixdb-clients/+/17873 )
Change subject: WIP : Changes to support database entity
......................................................................
WIP : Changes to support database entity
Change-Id: I53242717a5278fffd77c682a66694bb3c02b3ee6
---
M
asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBConnection.java
M
asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java
2 files changed, 68 insertions(+), 7 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb-clients
refs/changes/73/17873/1
diff --git
a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBConnection.java
b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBConnection.java
index ca61992..8fbee3c 100644
---
a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBConnection.java
+++
b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBConnection.java
@@ -610,4 +610,10 @@
public void setClientInfo(String name, String value) throws
SQLClientInfoException {
throw
getErrorReporter().errorClientInfoMethodNotSupported(Connection.class,
"setClientInfo");
}
+
+ public boolean supportsDatabaseEntity() {
+ //ADBProductVersion productVersion = new ADBProductVersion("", "1", 0,
0);
+ //return databaseVersion.isAtLeast(productVersion);
+ return true;
+ }
}
diff --git
a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java
b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java
index 4525062..89e5799 100644
---
a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java
+++
b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBMetaStatement.java
@@ -61,7 +61,11 @@
sql.append("from Metadata.`Dataverse` ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("let TABLE_CAT = DataverseName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("let TABLE_CAT = DatabaseName || '/' ||
DataverseName ");
+ } else {
+ sql.append("let TABLE_CAT = DataverseName ");
+ }
break;
case CATALOG_SCHEMA:
sql.append("let name = decode_dataverse_name(DataverseName),
");
@@ -109,7 +113,11 @@
sql.append("let ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("TABLE_CATALOG = DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("TABLE_CATALOG = DatabaseName || '/' ||
DataverseName, ");
+ } else {
+ sql.append("TABLE_CATALOG = DataverseName, ");
+ }
sql.append("TABLE_SCHEM = null ");
sql.append("where true ");
break;
@@ -149,10 +157,17 @@
sql.append("null TYPE_SCHEM, null TYPE_NAME, null
SELF_REFERENCING_COL_NAME, null REF_GENERATION ");
sql.append("from Metadata.`Dataset` ds join Metadata.`Datatype` dt ");
sql.append("on ds.DatatypeDataverseName = dt.DataverseName and
ds.DatatypeName = dt.DatatypeName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and ds.DatatypeDatabaseName = dt.DatabaseName ");
+ }
sql.append("let ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("TABLE_CAT = ds.DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("TABLE_CAT = ds.DatabaseName || '/' ||
ds.DataverseName, ");
+ } else {
+ sql.append("TABLE_CAT = ds.DataverseName, ");
+ }
sql.append("TABLE_SCHEM = null, ");
break;
case CATALOG_SCHEMA:
@@ -221,14 +236,24 @@
sql.append("from Metadata.`Dataset` ds ");
sql.append("join Metadata.`Datatype` dt ");
sql.append("on ds.DatatypeDataverseName = dt.DataverseName and
ds.DatatypeName = dt.DatatypeName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and ds.DatatypeDatabaseName = dt.DatabaseName ");
+ }
sql.append("unnest dt.Derived.Record.Fields as field at fieldpos ");
sql.append("left join Metadata.`Datatype` dt2 ");
sql.append(
"on field.FieldType = dt2.DatatypeName and ds.DataverseName =
dt2.DataverseName and dt2.Derived is known ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and ds.DatabaseName = dt2.DatabaseName ");
+ }
sql.append("let ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("TABLE_CAT = ds.DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("TABLE_CAT = ds.DatabaseName || '/' ||
ds.DataverseName, ");
+ } else {
+ sql.append("TABLE_CAT = ds.DataverseName, ");
+ }
sql.append("TABLE_SCHEM = null, ");
break;
case CATALOG_SCHEMA:
@@ -304,12 +329,19 @@
sql.append("from Metadata.`Dataset` ds ");
sql.append("join Metadata.`Datatype` dt ");
sql.append("on ds.DatatypeDataverseName = dt.DataverseName and
ds.DatatypeName = dt.DatatypeName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and ds.DatatypeDatabaseName = dt.DatabaseName ");
+ }
sql.append("unnest coalesce(ds.InternalDetails, ds.ExternalDetails,
ds.ViewDetails).PrimaryKey pki at pkipos ");
sql.append("let ");
sql.append("hasFields = array_length(dt.Derived.Record.Fields) > 0, ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("TABLE_CAT = ds.DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("TABLE_CAT = ds.DatabaseName || '/' ||
ds.DataverseName, ");
+ } else {
+ sql.append("TABLE_CAT = ds.DataverseName, ");
+ }
sql.append("TABLE_SCHEM = null, ");
break;
case CATALOG_SCHEMA:
@@ -386,17 +418,31 @@
sql.append("from Metadata.`Dataset` ds ");
sql.append("join Metadata.`Datatype` dt ");
sql.append("on ds.DatatypeDataverseName = dt.DataverseName and
ds.DatatypeName = dt.DatatypeName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and ds.DatatypeDatabaseName = dt.DatabaseName ");
+ }
sql.append("unnest coalesce(ds.InternalDetails, ds.ExternalDetails,
ds.ViewDetails).ForeignKeys fk at fkpos ");
sql.append("join Metadata.`Dataset` ds2 ");
sql.append("on fk.RefDataverseName = ds2.DataverseName and
fk.RefDatasetName = ds2.DatasetName ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("and fk.RefDatabaseName = ds2.DatabaseName ");
+ }
sql.append("unnest fk.ForeignKey fki at fkipos ");
sql.append("let ");
sql.append("hasFields = array_length(dt.Derived.Record.Fields) > 0, ");
switch (connection.catalogDataverseMode) {
case CATALOG:
- sql.append("FKTABLE_CAT = ds.DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("FKTABLE_CAT = ds.DatabaseName || '/' ||
ds.DataverseName, ");
+ } else {
+ sql.append("FKTABLE_CAT = ds.DataverseName, ");
+ }
sql.append("FKTABLE_SCHEM = null, ");
- sql.append("PKTABLE_CAT = ds2.DataverseName, ");
+ if (connection.supportsDatabaseEntity()) {
+ sql.append("PKTABLE_CAT = ds2.DatabaseName || '/' ||
ds2.DataverseName, ");
+ } else {
+ sql.append("PKTABLE_CAT = ds2.DataverseName, ");
+ }
sql.append("PKTABLE_SCHEM = null, ");
break;
case CATALOG_SCHEMA:
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb-clients/+/17873
To unsubscribe, or for help writing mail filters, visit
https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb-clients
Gerrit-Branch: master
Gerrit-Change-Id: I53242717a5278fffd77c682a66694bb3c02b3ee6
Gerrit-Change-Number: 17873
Gerrit-PatchSet: 1
Gerrit-Owner: Peeyush Gupta <[email protected]>
Gerrit-MessageType: newchange