Repository: incubator-trafodion
Updated Branches:
  refs/heads/master 8b1df54ba -> 2f9af4d66


[TRAFODION-206][TRAFODION-2018] Merge support for new catalog APIs,
PROCEDURES and PROCEDURECOLUMNS


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/2f9af4d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/2f9af4d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/2f9af4d6

Branch: refs/heads/master
Commit: 2f9af4d665f76a230da6f96e835b0ea7c7583f2f
Parents: 8b1df54
Author: Dave Birdsall <dbirds...@apache.org>
Authored: Mon Jul 11 19:13:51 2016 +0000
Committer: Dave Birdsall <dbirds...@apache.org>
Committed: Mon Jul 11 19:13:51 2016 +0000

----------------------------------------------------------------------
 core/conn/jdbcT4/pom.xml                        |   6 +
 .../trafodion/jdbc/t4/T4DatabaseMetaData.java   |   6 +-
 .../odbc/src/odbc/nsksrvrcore/srvrothers.cpp    | 110 ++++++++++++++++++-
 core/conn/trafci/.gitignore                     |   1 +
 4 files changed, 119 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/2f9af4d6/core/conn/jdbcT4/pom.xml
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/pom.xml b/core/conn/jdbcT4/pom.xml
index bada198..a1b5f89 100644
--- a/core/conn/jdbcT4/pom.xml
+++ b/core/conn/jdbcT4/pom.xml
@@ -40,6 +40,12 @@
       <version>4.11</version>
       <scope>test</scope>
     </dependency>
+       <dependency>
+               <groupId>org.slf4j</groupId>
+               <artifactId>slf4j-simple</artifactId>
+               <version>1.7.21</version>
+               <scope>test</scope>
+       </dependency>
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/2f9af4d6/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
----------------------------------------------------------------------
diff --git 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
index 4a12447..5457eb1 100644
--- 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
+++ 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
@@ -3094,7 +3094,7 @@ public class T4DatabaseMetaData extends TrafT4Handle 
implements java.sql.Databas
 
                }
                getSQLCatalogsInfo(connection_.getServerHandle(), // Server 
Handle
-                               SQL_API_SQLPROCEDURES, // catalogAPI
+                               SQL_API_SQLPROCEDURES_JDBC, // catalogAPI
                                catalogNm, // catalog
                                schemaNm, // schema
                                procedureNamePattern, // table name
@@ -3237,7 +3237,7 @@ public class T4DatabaseMetaData extends TrafT4Handle 
implements java.sql.Databas
 
                }
                getSQLCatalogsInfo(connection_.getServerHandle(), // Server 
Handle
-                               SQL_API_SQLPROCEDURECOLUMNS, // catalogAPI
+                               SQL_API_SQLPROCEDURECOLUMNS_JDBC, // catalogAPI
                                catalogNm, // catalog
                                schemaNm, // schema
                                procedureNamePattern, // table name
@@ -5826,6 +5826,8 @@ public class T4DatabaseMetaData extends TrafT4Handle 
implements java.sql.Databas
        private static final short SQL_API_SQLCOLUMNS_JDBC = (short) 
(SQL_API_SQLCOLUMNS + SQL_API_JDBC);
        private static final short SQL_API_SQLSPECIALCOLUMNS_JDBC = (short) 
(SQL_API_SQLSPECIALCOLUMNS + SQL_API_JDBC);
        private static final short SQL_API_SQLGETTYPEINFO_JDBC = (short) 
(SQL_API_SQLGETTYPEINFO + SQL_API_JDBC);
+       private static final short SQL_API_SQLPROCEDURES_JDBC = (short) 
(SQL_API_SQLPROCEDURES + SQL_API_JDBC);
+       private static final short SQL_API_SQLPROCEDURECOLUMNS_JDBC = (short) 
(SQL_API_SQLPROCEDURECOLUMNS + SQL_API_JDBC);
 
        // values of NULLABLE field in descriptor
        private static final long SQL_NO_NULLS = 0;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/2f9af4d6/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp 
b/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
index 3458251..9f399b2 100644
--- a/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvrcore/srvrothers.cpp
@@ -145,6 +145,8 @@ SMD_QUERY_TABLE tranQueryTable[] = {
 #define SQL_API_SQLGETTYPEINFO_JDBC            SQL_API_SQLGETTYPEINFO + 
SQL_API_JDBC
 #define SQL_API_SQLCOLUMNS_JDBC                        SQL_API_SQLCOLUMNS + 
SQL_API_JDBC
 #define SQL_API_SQLSPECIALCOLUMNS_JDBC SQL_API_SQLSPECIALCOLUMNS + SQL_API_JDBC
+#define SQL_API_SQLPROCEDURES_JDBC     SQL_API_SQLPROCEDURES + SQL_API_JDBC
+#define SQL_API_SQLPROCEDURECOLUMNS_JDBC      SQL_API_SQLPROCEDURECOLUMNS  + 
SQL_API_JDBC
 // The value represents SQL version, MXCS module major version and MXCS module 
minor version.
 #define MODULE_RELEASE_VERSION                 200
 #define        MODULE_MAJOR_VERSION                    400
@@ -4601,6 +4603,7 @@ odbc_SQLSvc_GetSQLCatalogs_sme_(
                      }
 
                case SQL_API_SQLPROCEDURES :
+               case SQL_API_SQLPROCEDURES_JDBC:
                //      strcpy((char *)catStmtLabel, "SQL_PROCEDURES_ANSI_Q4");
 
                        if (!checkIfWildCard(catalogNm, expCatalogNm) && 
!metadataId)
@@ -4625,7 +4628,9 @@ odbc_SQLSvc_GetSQLCatalogs_sme_(
                        inputParam[3] = expTableNm;
                        inputParam[4] = NULL;
 
-                        snprintf(CatalogQuery,sizeof(CatalogQuery),
+                       if( APIType == SQL_API_SQLPROCEDURES )
+                       {
+                               snprintf(CatalogQuery,sizeof(CatalogQuery),
  "select "
   "cast('%s' as varchar(128) ) PROCEDURE_CAT, "
   "cast(trim(SCHEMA_NAME) as varchar(128) ) PROCEDURE_SCHEM, "
@@ -4642,11 +4647,112 @@ odbc_SQLSvc_GetSQLCatalogs_sme_(
  "where (SCHEMA_NAME = '%s' "
         "or trim(SCHEMA_NAME) LIKE '%s' ESCAPE '\\') "
   "and (OBJECT_NAME = '%s' "
-        "or trim(OBJECT_NAME) LIKE '%s' ESCAPE '\') "
+        "or trim(OBJECT_NAME) LIKE '%s' ESCAPE '\\') "
   "and OBJECT_TYPE = 'UR' "
  "FOR READ UNCOMMITTED ACCESS ORDER BY 4, 1, 2, 3 ;",
                                tableParam[0], inputParam[0], inputParam[1],
                                inputParam[2], inputParam[3]);
+                       }
+                       else
+                       {
+                               snprintf(CatalogQuery,sizeof(CatalogQuery),
+"select "
+"obj.CATALOG_NAME PROCEDURE_CAT, obj.SCHEMA_NAME PROCEDURE_SCHEMA,"
+"obj.OBJECT_NAME PROCEDURE_NAME, cast(NULL as varchar(10)) R1,cast(NULL as 
varchar(10)) R2,"
+"cast(NULL as varchar(10)) R3, cast(NULL as varchar(10)) REMARKS,"
+"cast(case when routines.UDR_TYPE = 'P' then 1"
+"    when routines.UDR_TYPE = 'F' or routines.UDR_TYPE = 'T'"
+"    then 2 else 0 end as smallint) PROCEDURE_TYPE,"
+"obj.OBJECT_NAME SPECIFIC_NAME "
+"from "
+"TRAFODION.\"_MD_\".OBJECTS obj "
+"left join TRAFODION.\"_MD_\".ROUTINES routines on obj.OBJECT_UID = 
routines.UDR_UID "
+"where (obj.SCHEMA_NAME = '%s' "
+"or trim(obj.SCHEMA_NAME) LIKE '%s' ESCAPE '\\') "
+"and (obj.OBJECT_NAME = '%s' "
+"or trim(obj.OBJECT_NAME) LIKE '%s' ESCAPE '\\') "
+"and obj.OBJECT_TYPE = 'UR' "
+"FOR READ UNCOMMITTED ACCESS ORDER BY 4, 1, 2, 3 ;",
+                              inputParam[0], inputParam[1],
+                              inputParam[2], inputParam[3]);
+                       }
+                       break;
+               case SQL_API_SQLPROCEDURECOLUMNS:
+               case SQL_API_SQLPROCEDURECOLUMNS_JDBC:
+                       if (!checkIfWildCard(catalogNm, expCatalogNm) && 
!metadataId)
+                       {
+                       exception_->exception_nr = 
odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_;
+                       exception_->u.ParamError.ParamDesc = 
SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED;
+                       goto MapException;
+                       }
+                       if (strcmp(catalogNm,"") == 0)
+                       strcpy(tableName1,SEABASE_MD_CATALOG);
+                       else
+                       strcpy(tableName1,catalogNm);
+                       tableParam[0] = tableName1;
+                               tableParam[1] = NULL;
+                       convertWildcardNoEsc(metadataId, TRUE, schemaNm, 
schemaNmNoEsc);
+                       convertWildcard(metadataId, TRUE, schemaNm, 
expSchemaNm);
+                       convertWildcardNoEsc(metadataId, TRUE, tableNm, 
tableNmNoEsc);
+                       convertWildcard(metadataId, TRUE, tableNm, expTableNm);
+                       convertWildcardNoEsc(metadataId, TRUE, columnNm, 
columnNmNoEsc);
+                       convertWildcard(metadataId, TRUE, columnNm, 
expColumnNm);
+                       inputParam[0] = schemaNmNoEsc;
+                       inputParam[1] = expSchemaNm;
+                       inputParam[2] = tableNmNoEsc;
+                       inputParam[3] = expTableNm;
+                       inputParam[4] = columnNmNoEsc;
+                       inputParam[5] = expColumnNm;
+                       inputParam[6] = NULL;
+                       if( APIType == SQL_API_SQLPROCEDURECOLUMNS )
+                       {
+                               snprintf(CatalogQuery,sizeof(CatalogQuery),
+"select obj.CATALOG_NAME PROCEDURE_CAT, obj.SCHEMA_NAME PROCEDURE_SCHEM,"
+"obj.OBJECT_NAME PROCEDURE_NAME, cols.COLUMN_NAME COLUMN_NAME,"
+"cast((case when cols.DIRECTION='I' then 1 when cols.DIRECTION='N' "
+"then 2 when cols.DIRECTION='O' then 3 else 0 end) as smallint) COLUMN_TYPE,"
+"cols.FS_DATA_TYPE DATA_TYPE, cols.SQL_DATA_TYPE TYPE_NAME,"
+"cols.COLUMN_PRECISION \"PRECISION\", cols.COLUMN_SIZE LENGTH, 
cols.COLUMN_SCALE SCALE,"
+"cast(1 as smallint) RADIX, cols.NULLABLE NULLABLE, cast(NULL as varchar(10)) 
REMARKS,"
+"cols.DEFAULT_VALUE COLUMN_DEF, cols.FS_DATA_TYPE SQL_DATA_TYPE, cast(0 as 
smallint) SQL_DATETIME_SUB,"
+"cols.COLUMN_SIZE CHAR_OCTET_LENGTH, cols.COLUMN_NUMBER ORDINAL_POSITION,"
+"cols.NULLABLE IS_NULLABLE"
+" from TRAFODION.\"_MD_\".OBJECTS obj"
+" left join TRAFODION.\"_MD_\".COLUMNS cols on obj.OBJECT_UID=cols.OBJECT_UID"
+" where"
+" (obj.SCHEMA_NAME = '%s' or trim(obj.SCHEMA_NAME) LIKE '%s' ESCAPE '\\') "
+" and (obj.OBJECT_NAME = '%s' or trim(obj.OBJECT_NAME) LIKE '%s' ESCAPE '\\')"
+" and (cols.COLUMN_NAME = '%s' or trim(cols.COLUMN_NAME) LIKE '%s' ESCAPE 
'\\')"
+" order by PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME, ORDINAL_POSITION"
+" FOR READ UNCOMMITTED ACCESS",
+                              inputParam[0], inputParam[1],
+                               inputParam[2], inputParam[3],
+                               inputParam[4], inputParam[5]);
+                       }
+            else
+            {
+                               snprintf(CatalogQuery,sizeof(CatalogQuery),
+"select obj.CATALOG_NAME PROCEDURE_CAT, obj.SCHEMA_NAME PROCEDURE_SCHEM,"
+"obj.OBJECT_NAME PROCEDURE_NAME, cols.COLUMN_NAME COLUMN_NAME,"
+"cast((case when cols.DIRECTION='I' then 1 when cols.DIRECTION='N' then 2 when 
cols.DIRECTION='O' then 3 else 0 end) as smallint) COLUMN_TYPE,"
+"cols.FS_DATA_TYPE DATA_TYPE, cols.SQL_DATA_TYPE TYPE_NAME,"
+"cols.COLUMN_PRECISION \"PRECISION\", cols.COLUMN_SIZE LENGTH, 
cols.COLUMN_SCALE SCALE,"
+"cast(1 as smallint) RADIX, cols.NULLABLE NULLABLE, cast(NULL as varchar(10)) 
REMARKS,"
+"cols.DEFAULT_VALUE COLUMN_DEF, cols.FS_DATA_TYPE SQL_DATA_TYPE, cast(0 as 
smallint) SQL_DATETIME_SUB,"
+"cols.COLUMN_SIZE CHAR_OCTET_LENGTH, cols.COLUMN_NUMBER ORDINAL_POSITION,"
+"cols.NULLABLE IS_NULLABLE, cols.COLUMN_NAME SPECIFIC_NAME"
+" from TRAFODION.\"_MD_\".OBJECTS obj"
+" left join TRAFODION.\"_MD_\".COLUMNS cols on obj.OBJECT_UID=cols.OBJECT_UID"
+" where"
+" (obj.SCHEMA_NAME = '%s' or trim(obj.SCHEMA_NAME) LIKE '%s' ESCAPE '\\') "
+" and (obj.OBJECT_NAME = '%s' or trim(obj.OBJECT_NAME) LIKE '%s' ESCAPE '\\')"
+" and (cols.COLUMN_NAME = '%s' or trim(cols.COLUMN_NAME) LIKE '%s' ESCAPE 
'\\')"
+" order by PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME, ORDINAL_POSITION"
+" FOR READ UNCOMMITTED ACCESS",
+                              inputParam[0], inputParam[1],
+                               inputParam[2], inputParam[3],
+                               inputParam[4], inputParam[5]);
+                       }
                        break;
                case SQL_API_SQLCOLUMNS :
                case SQL_API_SQLCOLUMNS_JDBC :

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/2f9af4d6/core/conn/trafci/.gitignore
----------------------------------------------------------------------
diff --git a/core/conn/trafci/.gitignore b/core/conn/trafci/.gitignore
index cdd0d09..df8f375 100644
--- a/core/conn/trafci/.gitignore
+++ b/core/conn/trafci/.gitignore
@@ -2,3 +2,4 @@ buildId
 temp/
 utils/trafci.cmd
 utils/trafci.sh
+/target/

Reply via email to