[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15311898#comment-15311898 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 closed the pull request at: https://github.com/apache/incubator-trafodion/pull/243 > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15158517#comment-15158517 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r53747636 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- hi Arvind, sorry for missing your comments. It's in jdbcT2, so right now it's following JDBC API. And i tried getIndexInfo("%", "%", "%", false, true), it works fine. the first 3 parameters are required. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15127148#comment-15127148 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r51490240 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- 1. Sorry for the confusion and the delay Kevin. I was referring to the output when all tables (%) under a schema are specified. In my testing the query in the code returned some rows with empty index name and in some cases temporary table names etc. This can be fixed in a separate JIRA if needed. TRAFODION MTD MTD0 0 NULL NULL -2 NULL NULL D -2 -2 NULL TRAFODION MTD __SCHEMA__ 0 NULL NULL -2 NULL NULL D -2 -2 NULL 2. I did look at the corresponding ODBC API. Ordinal position should start from 1, so please fix this one and I'll check this in. The following should be changed - cols.COLUMN_NUMBER ORDINAL_POSITION to keys.KEYSEQ_NUMBER ORDINAL_POSITION or with a cast if needed. 3. Also could you please create a separate enhancement JIRA - I think for column_class 'S' - "DIVISION BY" column_name (_DIVISION_n) and SALT we should have an optional column at the end - maybe "REMARKS" or some appropriate heading which should give the text from text.text - null for non-system columns (column_class <> 'S') > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15110243#comment-15110243 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r50369587 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- In my testing(jdbcT4), it should have an exception when table name is null. For TYPE, if the values of TYPE depands on column ASC_OR_DESC, it's duplicated. By the way, 3 also made me confused. -2 also is not a reasonable value, just want to say it is not use right now waiting for a meaningful value in the future. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15110236#comment-15110236 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r50368867 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- For table name is null, API says table name is required. Parameters: catalog a catalog name; must match the catalog name as it is stored in this database; "" retrieves those without a catalog; null means that the catalog name should not be used to narrow the search schema a schema name; must match the schema name as it is stored in this database; "" retrieves those without a schema; null means that the schema name should not be used to narrow the search table a table name; must match the table name as it is stored in this database unique when true, return only indices for unique values; when false, return indices regardless of whether unique or not approximate when true, result is allowed to reflect approximate or out of data values; when false, results are requested to be accurate > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15107799#comment-15107799 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r50204189 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- I checked on the query. With the current one if table name is not specified ( all indexes in a schema ) then I get index_names with NULL and get extra entries - please do check. Following query worked for me: select trim(obj.CATALOG_NAME) TABLE_CAT, trim(obj.SCHEMA_NAME) TABLE_SCHEM, trim(obj.OBJECT_NAME) TABLE_NAME, cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, cast(NULL as varchar(1)) INDEX_QUALIFIER, trim(idxobj.OBJECT_NAME) INDEX_NAME, cast(3 as smallint) TYPE, cast(cols.COLUMN_NUMBER as smallint) ORDINAL_POSITION, trim(cols.COLUMN_NAME) COLUMN_NAME, cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC, cast(NULL as int) CARDINALITY, cast(NULL as int) PAGES, cast(NULL as varchar(1)) FILTER_CONDITION from TRAFODION."_MD_".OBJECTS obj join TRAFODION."_MD_".INDEXES index on obj.OBJECT_UID=index.BASE_TABLE_UID join TRAFODION."_MD_".KEYS keys on index.INDEX_UID = keys.OBJECT_UID join TRAFODION."_MD_".COLUMNS cols on obj.OBJECT_UID = cols.OBJECT_UID and keys.COLUMN_NUMBER = cols.COLUMN_NUMBER join TRAFODION."_MD_".OBJECTS idxobj on index.index_uid=idxobj.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 (obj.object_type = 'BT') %s FOR READ UNCOMMITTED ACCESS order by NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME, ORDINAL_POSITION; Just looked at the documentation for SQLSTATISTICS - ASC_OR_DESC should be char(1). For defaults I chose TYPE as 3 and others NULL @zellerh - Hans - could you look at the query for getting index information from metadata and advice - I referred to smdixquery in regression tests. > DatabaseMetaData.getIndexInfo does not work >
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15085293#comment-15085293 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r48939910 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " + "from TRAFODION.\"_MD_\".OBJECTS obj " + "left join TRAFODION.\"_MD_\".INDEXES index on obj.object_uid=index.BASE_TABLE_UID " + "left join TRAFODION.\"_MD_\".OBJECTS idxobj on index.index_uid=idxobj.object_UID " + "left join TRAFODION.\"_MD_\".COLUMNS cols on cols.column_name<>'SYSKEY' and idxobj.object_uid=cols.object_uid " + "left join TRAFODION.\"_MD_\".KEYS keys on cols.object_uid=keys.object_uid and cols.COLUMN_NAME=keys.COLUMN_NAME and keys.column_name<>'SYSKEY' " + "where 1=1 %s" + " and (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 '\\')" + " FOR READ UNCOMMITTED ACCESS order by INDEX_NAME, ORDINAL_POSITION;", --- End diff -- i don't think it's reasonable because ORDINAL_POSITION is the order the indexes which should be the first level. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15087023#comment-15087023 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r49048663 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- I'm checking on this one Kevin - I'll let you know. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15086290#comment-15086290 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r49011034 --- Diff: dcs/src/main/java/org/trafodion/dcs/servermt/serverHandler/ServerApiGetCatalogs.java --- @@ -353,7 +353,7 @@ else if (columnType == ServerConstants.SQL_ROWVER){ case ServerConstants.SQL_API_SQLSTATISTICS: if(LOG.isDebugEnabled()) LOG.debug(serverWorkerName + ". getIndexInfo (catalogNm :" + catalogNm + ", schemaNm :" + schemaNm + ", tableNm :" + tableNm + ", uniqueness :" + ((uniqueness == 1)? true : false) + ", true)"); -rs = dbmd.getIndexInfo(catalogNm, schemaNm, tableNm, (uniqueness == 1)? true : false, true); +rs = dbmd.getIndexInfo(catalogNm, schemaNm, tableNm, (uniqueness == ServerConstants.SQL_INDEX_ALL)? true : false, true); --- End diff -- Thanks for the updates. Here shouldn't this be SQL_INDEX_UNIQUE (0 - like your previous change). You could update line 355 also. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15084425#comment-15084425 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r48914979 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " + "from TRAFODION.\"_MD_\".OBJECTS obj " + "left join TRAFODION.\"_MD_\".INDEXES index on obj.object_uid=index.BASE_TABLE_UID " + "left join TRAFODION.\"_MD_\".OBJECTS idxobj on index.index_uid=idxobj.object_UID " + "left join TRAFODION.\"_MD_\".COLUMNS cols on cols.column_name<>'SYSKEY' and idxobj.object_uid=cols.object_uid " + "left join TRAFODION.\"_MD_\".KEYS keys on cols.object_uid=keys.object_uid and cols.COLUMN_NAME=keys.COLUMN_NAME and keys.column_name<>'SYSKEY' " + "where 1=1 %s" --- End diff -- Could this %s ( uniqueness ) be added just before FOR READ UNCOMMITTED .. ? or is this done for performance reason ? " where " (obj.SCHEMA_NAME ... .. " %s FOR READ ..." > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15084432#comment-15084432 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r48915523 --- Diff: core/conn/jdbc_type2/native/SrvrSmd.cpp --- @@ -300,6 +301,15 @@ void odbc_SQLSvc_GetSQLCatalogs_sme_( inputParam[2] = schemaNmNoEsc; inputParam[3] = expSchemaNm; inputParam[4] = NULL; + if(uniqueness == 0) --- End diff -- Can you please add some comment that this is related to SQL_INDEX_UNIQUE(0) or use the same ? > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15084434#comment-15084434 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r48915554 --- Diff: core/conn/jdbc_type4/build.xml --- @@ -27,10 +27,11 @@ - - - - + --- End diff -- is this change related to this Jira ? > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15084442#comment-15084442 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user arvind-narain commented on a diff in the pull request: https://github.com/apache/incubator-trafodion/pull/243#discussion_r48915781 --- Diff: core/conn/jdbc_type2/native/SrvrCommon.cpp --- @@ -1634,6 +1635,53 @@ short do_ExecSMD( tableParam[0], inputParam[0], inputParam[1], inputParam[2], inputParam[3]); break; + case SQL_API_SQLSTATISTICS: + if ((!checkIfWildCard(catalogNm, catalogNmNoEsc) || !checkIfWildCard(schemaNm, schemaNmNoEsc) + || !checkIfWildCard(tableNm, tableNmNoEsc)) && !metadataId) + { + executeException->exception_nr = odbc_SQLSvc_GetSQLCatalogs_ParamError_exn_; + executeException->u.ParamError.ParamDesc = SQLSVC_EXCEPTION_WILDCARD_NOT_SUPPORTED; + FUNCTION_RETURN_NUMERIC(EXECUTE_EXCEPTION,("EXECUTE_EXCEPTION")); + } + + if (strcmp(catalogNm,"") == 0) + strcpy(tableName1,SEABASE_MD_CATALOG); + else + strcpy(tableName1, catalogNm); + tableParam[0] = tableName1; + convertWildcard(metadataId, TRUE, schemaNm, expSchemaNm); + convertWildcardNoEsc(metadataId, TRUE, schemaNm, schemaNmNoEsc); + convertWildcard(metadataId, TRUE, tableNm, expTableNm); + convertWildcardNoEsc(metadataId, TRUE, tableNm, tableNmNoEsc); + if( inputParam[5] != NULL ) + { + sprintf(cunique, " and index.IS_UNIQUE=1"); + } + inputParam[0] = schemaNmNoEsc; + inputParam[1] = expSchemaNm; + inputParam[2] = tableNmNoEsc; + inputParam[3] = expTableNm; + inputParam[4] = NULL; + snprintf((char *)sqlString->dataValue._buffer, totalSize, + "select " + "obj.CATALOG_NAME TABLE_CAT, obj.SCHEMA_NAME TABLE_SCHEM, obj.OBJECT_NAME TABLE_NAME," + "cast((case when index.IS_UNIQUE=0 then 1 else 0 end) as smallint) NON_UNIQUE, " + "cast(NULL as varchar(32)) INDEX_QUALIFIER, idxobj.OBJECT_NAME INDEX_NAME, " + "cast(-2 as smallint) TYPE, cols.COLUMN_NUMBER ORDINAL_POSITION, " + "substr(cols.COLUMN_NAME,0,CHAR_LENGTH(cols.COLUMN_NAME)) COLUMN_NAME, " + "cast((case when keys.ORDERING=0 then 'A' else 'D' end) as varchar(4)) ASC_OR_DESC," + "cast(-2 as int) CARDINALITY, cast(-2 as int) PAGES, cast(NULL as varchar(10)) FILTER_CONDITION " --- End diff -- Are these defaults ok ( -2 for cardinality, pages, type ) - just checking - I'm sure you have checked what these should be as per the API. The other request is to add a test case for this api and port the change to mxosrvr also. > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15075793#comment-15075793 ] ASF GitHub Bot commented on TRAFODION-1726: --- GitHub user kevinxu021 opened a pull request: https://github.com/apache/incubator-trafodion/pull/242 [TRAFODION-1726]Fixes for T2 getIndexInfo You can merge this pull request into a Git repository by running: $ git pull https://github.com/kevinxu021/incubator-trafodion a-t2-dbv Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-trafodion/pull/242.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #242 commit c5d5fa6699ac1b352ee40a0b3426f157cb674a2e Author: Kevin XuDate: 2015-12-28T06:33:47Z Fetch git revision by git command commit 7d26d511628abe5d9784f1942ab1c6b61279d874 Author: Kevin Xu Date: 2015-12-28T08:04:18Z it's validated if not closed commit 753bf62919366008a6bd42a993fda1a8fa08595e Author: Kevin Xu Date: 2015-12-31T06:57:44Z support SQL_API_SQLSTATISTICS commit 45f7c492156ce20dfce70fafa0eabbe00ac6aa67 Author: Kevin Xu Date: 2015-12-31T06:59:20Z Add some unit test cases for t4 > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15075804#comment-15075804 ] ASF GitHub Bot commented on TRAFODION-1726: --- Github user kevinxu021 closed the pull request at: https://github.com/apache/incubator-trafodion/pull/242 > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TRAFODION-1726) DatabaseMetaData.getIndexInfo does not work
[ https://issues.apache.org/jira/browse/TRAFODION-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15075808#comment-15075808 ] ASF GitHub Bot commented on TRAFODION-1726: --- GitHub user kevinxu021 opened a pull request: https://github.com/apache/incubator-trafodion/pull/243 [TRAFODION-1726]Support getIndexInfo You can merge this pull request into a Git repository by running: $ git pull https://github.com/kevinxu021/incubator-trafodion a-t2-indexinfo Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-trafodion/pull/243.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #243 commit 5d51f0233ab9977470356da1f406f3a110b83790 Author: Kevin XuDate: 2015-12-31T07:37:11Z Support getIndexInfo > DatabaseMetaData.getIndexInfo does not work > --- > > Key: TRAFODION-1726 > URL: https://issues.apache.org/jira/browse/TRAFODION-1726 > Project: Apache Trafodion > Issue Type: Bug > Components: client-jdbc-t2 >Reporter: Kevin Xu >Assignee: Kevin Xu > > DatabaseMetaData.getIndexInfo("TRAFODION", "SEABASE", "OSD28DL_Z1", false, > true) -- This message was sent by Atlassian JIRA (v6.3.4#6332)