vscode-db2i icon indicating copy to clipboard operation
vscode-db2i copied to clipboard

Get Indexes only shows SQL indexes. Needs LF's as well.

Open duieolson opened this issue 1 year ago • 4 comments

Liam, When right clicking on a table in the Schema Browser, and I choose the Get Index option on the drop down menu, the Results only show SQL indexes only. All Logical File indexes are skipped. I am suggesting show LF's with the sql indexes for a complete list of indexes.

To Reproduce Open ACS Schemas to a schema... Tables view and right click on a table that has LF's and SQL indexes. You will find a complete list.

Now Get Indexes in DB2 for IBM i extension. You will be missing LF's.

Environment

  • OS: Windows
  • Extension Version [DBV2 for IBMi v0.4.1]

VS Code: Version: 1.82.2 (system setup) Commit: abd2f3db4bdb28f9e95536dfa84d8479f1eb312d Date: 2023-09-14T05:55:25.390Z Electron: 25.8.1 ElectronBuildId: 23779380 Chromium: 114.0.5735.289 Node.js: 18.15.0 V8: 11.4.183.29-electron.0 OS: Windows_NT x64 10.0.19045

duieolson avatar Sep 22 '23 21:09 duieolson

--
-- "Tables"
--
select TABLE_SCHEMA, TABLE_NAME, NATIVE_TYPE,
       case
         when sql_object_type = 'TABLE' then 'SQL TABLE'
         when FILE_TYPE = 'DATA' then 'NATIVE FILE'
         else 'SOURCE PHYSICAL FILE'
       end as file_type_name, IASP_NUMBER, TEXT_DESCRIPTION, FILE_TYPE, SQL_OBJECT_TYPE,
       LAST_ALTERED_TIMESTAMP, SYSTEM_TABLE_SCHEMA, SYSTEM_TABLE_NAME, FILE_LEVEL_ID, LEVEL_CHECK,
       FILE_OWNER, CREATE_PUBLIC_AUTHORITY, NUMBER_MEMBERS, MAXIMUM_MEMBERS, MAXIMUM_RECORD_LENGTH,
       NUMBER_KEY_FIELDS, MAXIMUM_KEY_LENGTH, TRIGGER_COUNT, CONSTRAINT_COUNT, NUMBER_BASED_ON_FILES,
       BASED_ON_FILES, -- BASED_ON_FILES column available at 7.5 or later
       ALLOW_READ, ALLOW_WRITE, ALLOW_UPDATE, ALLOW_DELETE,
       MAXIMUM_FILE_WAIT_TIME, MAXIMUM_RECORD_WAIT_TIME, FORCE_WRITE_RATIO, SELECT_OMIT,
       PROGRAM_DESCRIBED, DISTRIBUTED, FILE_VRM, EARLIEST_POSSIBLE_RELEASE, ALLOW_NULL_KEYS,
       ALLOW_NULL_DATA, PRIMARY_KEY, UNIQUE_CONSTRAINT, "VOLATILE", KEEP_IN_MEMORY,
       MEDIA_PREFERENCE, SOURCE_FILE_LIBRARY, SOURCE_FILE, SOURCE_FILE_MEMBER, ACCESS_PATH_KEYED,
       ACCESS_PATH_TYPE, ACCESS_PATH_MAINTENANCE, ACCESS_PATH_SIZE, LOGICAL_PAGE_SIZE,
       FORCE_KEYED_ACCESS_PATH, ACCESS_PATH_JOURNALED, ACCESS_PATH_RECOVERY, SRTSEQ_IND,
       SORT_SEQUENCE_LIBRARY, SORT_SEQUENCE, LANGUAGE_IDENTIFIER, ROUNDING_MODE, DECFLOAT_WARNINGS,
       NUMBER_RECORD_FORMATS, FORMAT_LEVEL_ID, FORMAT_NAME, RECORD_LENGTH, NUMBER_FIELDS,
       COMMON_CCSID, CONTAINS_EXPLICIT_CCSID, CONTAINS_MULTIPLE_CCSIDS, CONTAINS_UNICODE,
       CONTAINS_VARYING_LENGTH, CONTAINS_DATETIME, CONTAINS_GRAPHIC, CONTAINS_LOB, CONTAINS_ROWID,
       CONTAINS_UDT, CONTAINS_DATALINK, CONTAINS_DATALINK_FILE_LINK_CONTROL, CONTAINS_NULL,
       CONTAINS_DEFAULT, CONTAINS_IDENTITY, CONTAINS_ROW_CHANGE_TIMESTAMP,
       CONTAINS_USER_DEFINED_FUNCTION, ALLOCATE_STORAGE, CONTIGUOUS_STORAGE,
       MAXIMUM_DELETED_PERCENTAGE, INITIAL_RECORDS, INCREMENT_RECORDS, MAXIMUM_INCREMENTS,
       REUSE_DELETED_RECORDS, MATERIALIZED_QUERY_TABLE, PARTITIONED_TABLE,
       ROW_AND_COLUMN_ACCESS_CONTROL, TOTAL_SELECT_OMIT, FMTSLR_LIBRARY, FMTSLR_PROGRAM,
       IS_JOIN_LOGICAL, DYNAMIC_SELECTION, WITH_CHECK_OPTION, PHYSICAL_LOB, PHYSICAL_DATALINK,
       INDEX_COLUMN_IS_EXPRESSION, INDEX_EXPRESSION_HAS_UDF, INDEX_HAS_SEARCH_CONDITION,
       INDEX_SEARCH_CONDITION_HAS_UDF
  from QSYS2.SYSFiles
  where TABLE_SCHEMA = 'QGPL' and
        NATIVE_TYPE = 'PHYSICAL';
        
--
-- "Views"
--
select TABLE_SCHEMA, TABLE_NAME, NATIVE_TYPE,
       case
         when sql_object_type = 'TABLE' then 'SQL TABLE'
         when FILE_TYPE = 'DATA' then 'NATIVE FILE'
         else 'SOURCE PHYSICAL FILE'
       end as file_type_name, IASP_NUMBER, TEXT_DESCRIPTION, FILE_TYPE, SQL_OBJECT_TYPE,
       LAST_ALTERED_TIMESTAMP, SYSTEM_TABLE_SCHEMA, SYSTEM_TABLE_NAME, FILE_LEVEL_ID, LEVEL_CHECK,
       FILE_OWNER, CREATE_PUBLIC_AUTHORITY, NUMBER_MEMBERS, MAXIMUM_MEMBERS, MAXIMUM_RECORD_LENGTH,
       NUMBER_KEY_FIELDS, MAXIMUM_KEY_LENGTH, TRIGGER_COUNT, CONSTRAINT_COUNT, NUMBER_BASED_ON_FILES,
       BASED_ON_FILES, -- BASED_ON_FILES column available at 7.5 or later
       ALLOW_READ, ALLOW_WRITE, ALLOW_UPDATE, ALLOW_DELETE,
       MAXIMUM_FILE_WAIT_TIME, MAXIMUM_RECORD_WAIT_TIME, FORCE_WRITE_RATIO, SELECT_OMIT,
       PROGRAM_DESCRIBED, DISTRIBUTED, FILE_VRM, EARLIEST_POSSIBLE_RELEASE, ALLOW_NULL_KEYS,
       ALLOW_NULL_DATA, PRIMARY_KEY, UNIQUE_CONSTRAINT, "VOLATILE", KEEP_IN_MEMORY,
       MEDIA_PREFERENCE, SOURCE_FILE_LIBRARY, SOURCE_FILE, SOURCE_FILE_MEMBER, ACCESS_PATH_KEYED,
       ACCESS_PATH_TYPE, ACCESS_PATH_MAINTENANCE, ACCESS_PATH_SIZE, LOGICAL_PAGE_SIZE,
       FORCE_KEYED_ACCESS_PATH, ACCESS_PATH_JOURNALED, ACCESS_PATH_RECOVERY, SRTSEQ_IND,
       SORT_SEQUENCE_LIBRARY, SORT_SEQUENCE, LANGUAGE_IDENTIFIER, ROUNDING_MODE, DECFLOAT_WARNINGS,
       NUMBER_RECORD_FORMATS, FORMAT_LEVEL_ID, FORMAT_NAME, RECORD_LENGTH, NUMBER_FIELDS,
       COMMON_CCSID, CONTAINS_EXPLICIT_CCSID, CONTAINS_MULTIPLE_CCSIDS, CONTAINS_UNICODE,
       CONTAINS_VARYING_LENGTH, CONTAINS_DATETIME, CONTAINS_GRAPHIC, CONTAINS_LOB, CONTAINS_ROWID,
       CONTAINS_UDT, CONTAINS_DATALINK, CONTAINS_DATALINK_FILE_LINK_CONTROL, CONTAINS_NULL,
       CONTAINS_DEFAULT, CONTAINS_IDENTITY, CONTAINS_ROW_CHANGE_TIMESTAMP,
       CONTAINS_USER_DEFINED_FUNCTION, ALLOCATE_STORAGE, CONTIGUOUS_STORAGE,
       MAXIMUM_DELETED_PERCENTAGE, INITIAL_RECORDS, INCREMENT_RECORDS, MAXIMUM_INCREMENTS,
       REUSE_DELETED_RECORDS, MATERIALIZED_QUERY_TABLE, PARTITIONED_TABLE,
       ROW_AND_COLUMN_ACCESS_CONTROL, TOTAL_SELECT_OMIT, FMTSLR_LIBRARY, FMTSLR_PROGRAM,
       IS_JOIN_LOGICAL, DYNAMIC_SELECTION, WITH_CHECK_OPTION, PHYSICAL_LOB, PHYSICAL_DATALINK,
       INDEX_COLUMN_IS_EXPRESSION, INDEX_EXPRESSION_HAS_UDF, INDEX_HAS_SEARCH_CONDITION,
       INDEX_SEARCH_CONDITION_HAS_UDF
  from QSYS2.SYSFiles
  where TABLE_SCHEMA = 'QGPL' and native_type = 'LOGICAL' and access_path_keyed = 'NO' ;
  
       
--
-- "Indexes"
--
select TABLE_SCHEMA, TABLE_NAME, NATIVE_TYPE,
       case
         when sql_object_type = 'TABLE' then 'SQL TABLE'
         when FILE_TYPE = 'DATA' then 'NATIVE FILE'
         else 'SOURCE PHYSICAL FILE'
       end as file_type_name, IASP_NUMBER, TEXT_DESCRIPTION, FILE_TYPE, SQL_OBJECT_TYPE,
       LAST_ALTERED_TIMESTAMP, SYSTEM_TABLE_SCHEMA, SYSTEM_TABLE_NAME, FILE_LEVEL_ID, LEVEL_CHECK,
       FILE_OWNER, CREATE_PUBLIC_AUTHORITY, NUMBER_MEMBERS, MAXIMUM_MEMBERS, MAXIMUM_RECORD_LENGTH,
       NUMBER_KEY_FIELDS, MAXIMUM_KEY_LENGTH, TRIGGER_COUNT, CONSTRAINT_COUNT, NUMBER_BASED_ON_FILES,
       BASED_ON_FILES, -- BASED_ON_FILES column available at 7.5 or later
       ALLOW_READ, ALLOW_WRITE, ALLOW_UPDATE, ALLOW_DELETE,
       MAXIMUM_FILE_WAIT_TIME, MAXIMUM_RECORD_WAIT_TIME, FORCE_WRITE_RATIO, SELECT_OMIT,
       PROGRAM_DESCRIBED, DISTRIBUTED, FILE_VRM, EARLIEST_POSSIBLE_RELEASE, ALLOW_NULL_KEYS,
       ALLOW_NULL_DATA, PRIMARY_KEY, UNIQUE_CONSTRAINT, "VOLATILE", KEEP_IN_MEMORY,
       MEDIA_PREFERENCE, SOURCE_FILE_LIBRARY, SOURCE_FILE, SOURCE_FILE_MEMBER, ACCESS_PATH_KEYED,
       ACCESS_PATH_TYPE, ACCESS_PATH_MAINTENANCE, ACCESS_PATH_SIZE, LOGICAL_PAGE_SIZE,
       FORCE_KEYED_ACCESS_PATH, ACCESS_PATH_JOURNALED, ACCESS_PATH_RECOVERY, SRTSEQ_IND,
       SORT_SEQUENCE_LIBRARY, SORT_SEQUENCE, LANGUAGE_IDENTIFIER, ROUNDING_MODE, DECFLOAT_WARNINGS,
       NUMBER_RECORD_FORMATS, FORMAT_LEVEL_ID, FORMAT_NAME, RECORD_LENGTH, NUMBER_FIELDS,
       COMMON_CCSID, CONTAINS_EXPLICIT_CCSID, CONTAINS_MULTIPLE_CCSIDS, CONTAINS_UNICODE,
       CONTAINS_VARYING_LENGTH, CONTAINS_DATETIME, CONTAINS_GRAPHIC, CONTAINS_LOB, CONTAINS_ROWID,
       CONTAINS_UDT, CONTAINS_DATALINK, CONTAINS_DATALINK_FILE_LINK_CONTROL, CONTAINS_NULL,
       CONTAINS_DEFAULT, CONTAINS_IDENTITY, CONTAINS_ROW_CHANGE_TIMESTAMP,
       CONTAINS_USER_DEFINED_FUNCTION, ALLOCATE_STORAGE, CONTIGUOUS_STORAGE,
       MAXIMUM_DELETED_PERCENTAGE, INITIAL_RECORDS, INCREMENT_RECORDS, MAXIMUM_INCREMENTS,
       REUSE_DELETED_RECORDS, MATERIALIZED_QUERY_TABLE, PARTITIONED_TABLE,
       ROW_AND_COLUMN_ACCESS_CONTROL, TOTAL_SELECT_OMIT, FMTSLR_LIBRARY, FMTSLR_PROGRAM,
       IS_JOIN_LOGICAL, DYNAMIC_SELECTION, WITH_CHECK_OPTION, PHYSICAL_LOB, PHYSICAL_DATALINK,
       INDEX_COLUMN_IS_EXPRESSION, INDEX_EXPRESSION_HAS_UDF, INDEX_HAS_SEARCH_CONDITION,
       INDEX_SEARCH_CONDITION_HAS_UDF
  from QSYS2.SYSFiles
  where TABLE_SCHEMA = 'QGPL' and native_type = 'LOGICAL' and access_path_keyed = 'YES' ;

worksofliam avatar Mar 08 '24 15:03 worksofliam

https://www.ibm.com/docs/en/i/7.3?topic=views-sysfiles

worksofliam avatar Mar 08 '24 15:03 worksofliam

https://www.ibm.com/docs/en/i/7.5?topic=views-syspartitionindexes

Use this view when you want to see index information for indexes built on a specified table or set of tables. The information is similar to that returned by the Work with Indexes found in IBM i Access Client Solutions (ACS) Schemas.

davecharron avatar Apr 17 '24 20:04 davecharron

Excellent point Dave. From a developer standpoint. I am looking for all LFs and indexes so I can see what indexes are availble on a table, to better structure my embedded sql, or, to tell if I am going to need a new index as part of my pgm development. Dave's referenced SYSPARTITIONINDEXES shows us both as well as the key fields in order on one row along wtih many other very useful columns of info. Wonderful!

duieolson avatar Apr 17 '24 21:04 duieolson