>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

Reply via email to