Explain Table Maintenance mit ADMIN_EXPLAIN_MAINT
Mit dem DB2 11 for z/OS Enhancement APAR PI05200 steht künftig eine sehr komfortable Möglichkeit zur Verfügung, Objekte, die während des EXPLAIN-Prozesses benötigt werden, anzulegen oder zu komplettieren bzw. zu aktuaklisieren. Der Anwender muss sich nur noch den gewünschten EXPLAIN-Table-Umfang aussuchen.
Die Rede ist von ADMIN_EXPLAIN_MAINT, der IBM DB2 supplied Stored Procedure für die EXPLAIN-Table-Maintenance.
Die Ausführung der Stored Procedure ist leider nicht ganz einfach, zumindest nicht für den „z/OS-Dinosaurier“. Ich habe deswegen den Aufruf von ADMIN_EXPLAIN_MAINT in eine kleine REXX-Prozedur gepackt, um sehr komfortabel z.B. über z/OS-Job die gewünschten Aktionen durchführen zu können.
Wenn die REXX Prozedur erstmal in einer konkatinierten TSO/ISPF Bibliothek steht, kann sie mit „TSO XMPEXADM“ aufgerufen werden und zeigt dann ihre möglichen Argumente an, wovon nur einige wenige „must“, die meisten „optional“ sind.
###############################################################################
# XMPEXADM V1.0 - Maintain or Create DB2 EXPLAIN Tables 14/12/30 20:00:00 #
###############################################################################
DB2 Subsystem not specified.
XMPEXADM: Syntax error.
[TSO] XMPEXADM :
SSID .......: DB2 Subsystem ID
MODE .......: RUN|PREVIEW
ACTION .....: STANDARDIZE|..._AND_CREATE|DROP|...
STANDARDIZE Upgrade all existing EXPLAIN tables
to the format for the current DB2 version.
STANDARDIZE_AND_CREATE Upgrade all existing
EXPLAIN tables to the format for the current
DB2 version, and create any missing tables of
those that are specified by the table-set
input parameter.
CREATE Create a new set of EXPLAIN tables in
the specified schema. Only tables that are
specified by the table-set input parameter
are created.
CREATE_ALIAS Create a new set of aliases only.
The new aliases are qualified by the value
that is specified for the schema-alias
input parameter.
DROP Drop all exisiting EXPLAIN tables and the
associated table space.
DROP_AND_CREATE Drop all existing EXPLAIN
tables, and the associated table space, and
create a replacement set of the tables that
are specified by the table-set input
parameter.
MGALIAS ....: manage aliases YES|NO
TABLESET ...: ALL|ACCEL|DIANGOSTICS|ALL_ACCEPT()
AUTHID .....: (must) authorization ID (CURRENT SQLID)
SCHEMA .....: (must) schema|qualifier (CURRENT SQLID)
SCHEMAALIAS : schema name for aliases
DBNAME .....: database
STGDBNAME ..: storage group tablespaces
STGIXNAME ..: storage group indexspaces
BP04NAME ...: BP 4K pages to be used
BP08NAME ...: BP 8K pages to be used
BP16NAME ...: BP 16K pages to be used
BP32NAME ...: BP 32K pages to be used
BPIXNAME ...: BP for IX pages to be used
BP04LOB ....: BP 4K pages to be used for LOB's
1 BP08LOB ....: BP 8K pages to be used for LOB's
BP16LOB ....: BP 16K pages to be used for LOB's
BP32LOB ....: BP 32K pages to be used for LOB's
Examples:
TSO XMPEXADM DB2P,PREVIEW,STANDARDIZE_AND_CREATE,,ALL,USER1,USER1
TSO XMPEXADM DB2P,RUN,CREATE,,ALL,ADMUSR1,USER2,DBUSR2
Sehr viel komfortabler wird der Aufruf aus einem z/OS Batch Job heraus:
//EXADM EXEC PGM=IKJEFT1A //***************************************************************** //* EXPLAIN TABLE MAINTENANCE //***************************************************************** //STEPLIB INCLUDE MEMBER=&SSID.#SL // DD DSN=YOURID.PGM.LOAD,DISP=SHR //SYSEXEC DD DSN=YOURID.REXX.LIB,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSTSIN DD * XMPEXADM DB2P,PREVIEW,STANDARDIZE_AND_CREATE,,ALL,ADMUSR1,DEMOID,,+ DEMODB /*
Der Output würde dann wie folgt aussehen:
XMPEXADM DB2P,PREVIEW,STANDARDIZE_AND_CREATE,,ALL,ADMUSR1,DEMOID,,DEMODB
###############################################################################
# XMPEXADM V1.0 - Maintain or Create DB2 EXPLAIN Tables 15/03/04 17:40:52 #
###############################################################################
XMPEXADM ...: Following values have been set for ADMIN_EXPLAIN_MAINT
DB2 SSID ...: DB2P
Mode .......: PREVIEW
Action .....: STANDARDIZE_AND_CREATE
Manage alias:
Table Set ..: ALL
Authid .....: ADMUSR1
Schema .....: DEMOID
Schema Alias:
Database ...: DEMODB
Storage Grp :
StGrp Index :
BP 4K ......:
BP 8K ......:
BP 16K .....:
BP 32K .....:
BP IX pages :
BP 4K LOB ..:
BP 8K LOB ..:
BP 16K LOB .:
BP 32K LOB .:
Summary of ADMIN_EXPLAIN_MAINT examinations:
--------------------------------------------
Created....: Database: 1 Tablespace: 0
Table: 23 IX: 21 Alias: 0
Examined...: Table: 0
Altered....: Table: 0
Dropped....: Tablespace: 0 Table: 0
Unexpected.: Table: 0
Not Stand..: Table: 0
Not UNICODE: Table: 0
Statements created by ADMIN_EXPLAIN_MAINT:
------------------------------------------
--- Row 1
CREATE DATABASE DEMODB CCSID UNICODE
--- Row 2
CREATE TABLE DEMOID.PLAN_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "APPLNAME" VARCHAR(24) NOT NULL, "PROGNAM
E" VARCHAR(128) NOT NULL, "PLANNO" SMALLINT NOT NULL, "METHOD" SMALLINT NOT NULL, "CREATOR" VARCHAR(128) NOT NULL, "TNAME" VARCHAR(
128) NOT NULL, "TABNO" SMALLINT NOT NULL, "ACCESSTYPE" CHAR(2) NOT NULL, "MATCHCOLS" SMALLINT NOT NULL, "ACCESSCREATOR" VARCHAR(128
) NOT NULL, "ACCESSNAME" VARCHAR(128) NOT NULL, "INDEXONLY" CHAR(1) NOT NULL, "SORTN_UNIQ" CHAR(1) NOT NULL, "SORTN_JOIN" CHAR(1) N
OT NULL, "SORTN_ORDERBY" CHAR(1) NOT NULL, "SORTN_GROUPBY" CHAR(1) NOT NULL, "SORTC_UNIQ" CHAR(1) NOT NULL, "SORTC_JOIN" CHAR(1) NO
T NULL, "SORTC_ORDERBY" CHAR(1) NOT NULL, "SORTC_GROUPBY" CHAR(1) NOT NULL, "TSLOCKMODE" CHAR(3) NOT NULL, "TIMESTAMP" CHAR(16) NOT
NULL, "REMARKS" VARCHAR(762) NOT NULL, "PREFETCH" CHAR(1) NOT NULL WITH DEFAULT, "COLUMN_FN_EVAL" CHAR(1) NOT NULL WITH DEFAULT, "
MIXOPSEQ" SMALLINT NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT
, "ACCESS_DEGREE" SMALLINT, "ACCESS_PGROUP_ID" SMALLINT, "JOIN_DEGREE" SMALLINT, "JOIN_PGROUP_ID" SMALLINT, "SORTC_PGROUP_ID" SMALL
INT, "SORTN_PGROUP_ID" SMALLINT, "PARALLELISM_MODE" CHAR(1), "MERGE_JOIN_COLS" SMALLINT, "CORRELATION_NAME" VARCHAR(128), "PAGE_RAN
GE" CHAR(1) NOT NULL WITH DEFAULT, "JOIN_TYPE" CHAR(1) NOT NULL WITH DEFAULT, "GROUP_MEMBER" VARCHAR(24) NOT NULL WITH DEFAULT, "IB
1M_SERVICE_DATA" VARCHAR(254) FOR BIT DATA NOT NULL WITH DEFAULT, "WHEN_OPTIMIZE" CHAR(1) NOT NULL WITH DEFAULT, "QBLOCK_TYPE" CHAR(
6) NOT NULL WITH DEFAULT, "BIND_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "OPTHINT" VARCHAR(128) NOT NULL WITH DEFAULT, "HINT_USED" VA
RCHAR(128) NOT NULL WITH DEFAULT, "PRIMARY_ACCESSTYPE" CHAR(1) NOT NULL WITH DEFAULT, "PARENT_QBLOCKNO" SMALLINT NOT NULL WITH DEFA
ULT, "TABLE_TYPE" CHAR(1), "TABLE_ENCODE" CHAR(1) NOT NULL WITH DEFAULT, "TABLE_SCCSID" SMALLINT NOT NULL WITH DEFAULT, "TABLE_MCCS
ID" SMALLINT NOT NULL WITH DEFAULT, "TABLE_DCCSID" SMALLINT NOT NULL WITH DEFAULT, "ROUTINE_ID" INTEGER NOT NULL WITH DEFAULT, "CTE
REF" SMALLINT NOT NULL WITH DEFAULT, "STMTTOKEN" VARCHAR(240), "PARENT_PLANNO" SMALLINT NOT NULL WITH DEFAULT, "BIND_EXPLAIN_ONLY"
CHAR(1) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "MERGC" CHA
R(1) NOT NULL WITH DEFAULT, "MERGN" CHAR(1) NOT NULL WITH DEFAULT, "SCAN_DIRECTION" CHAR(1), "EXPANSION_REASON" CHAR(2) NOT NULL WI
TH DEFAULT) IN DATABASE DEMODB CCSID UNICODE
--- Row 3
CREATE INDEX DEMOID.PLAN_TABLE_HINT_IX ON DEMOID.PLAN_TABLE ("QUERYNO", "APPLNAME", "PROGNAME", "VERSION", "COLLID", "OPTHINT") CLO
SE NO
--- Row 4
CREATE TABLE DEMOID.DSN_FUNCTION_TABLE ("QUERYNO" INTEGER NOT NULL WITH DEFAULT, "QBLOCKNO" INTEGER NOT NULL WITH DEFAULT, "APPLNAM
E" VARCHAR(24) NOT NULL WITH DEFAULT, "PROGNAME" VARCHAR(128) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "
GROUP_MEMBER" VARCHAR(24) NOT NULL WITH DEFAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "SCHEMA_NAME" VARCHAR(128) NOT NUL
L WITH DEFAULT, "FUNCTION_NAME" VARCHAR(128) NOT NULL WITH DEFAULT, "SPEC_FUNC_NAME" VARCHAR(128) NOT NULL WITH DEFAULT, "FUNCTION_
TYPE" CHAR(2) NOT NULL WITH DEFAULT, "VIEW_CREATOR" VARCHAR(128) NOT NULL WITH DEFAULT, "VIEW_NAME" VARCHAR(128) NOT NULL WITH DEFA
ULT, "PATH" VARCHAR(2048) NOT NULL WITH DEFAULT, "FUNCTION_TEXT" VARCHAR(1500) NOT NULL WITH DEFAULT, "FUNC_VERSION" VARCHAR(122) N
OT NULL WITH DEFAULT, "SECURE" CHAR(1) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT N
ULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB CCSID UNICODE
--- Row 5
CREATE TABLE DEMOID.DSN_STATEMNT_TABLE ("QUERYNO" INTEGER NOT NULL WITH DEFAULT, "APPLNAME" VARCHAR(24) NOT NULL WITH DEFAULT, "PRO
GNAME" VARCHAR(128) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "GROUP_MEMBER" VARCHAR(24) NOT NULL WITH DE
FAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "STMT_TYPE" CHAR(6) NOT NULL WITH DEFAULT, "COST_CATEGORY" CHAR(1) NOT NULL
WITH DEFAULT, "PROCMS" INTEGER NOT NULL WITH DEFAULT, "PROCSU" INTEGER NOT NULL WITH DEFAULT, "REASON" VARCHAR(254) NOT NULL WITH D
EFAULT, "STMT_ENCODE" CHAR(1) NOT NULL WITH DEFAULT, "TOTAL_COST" FLOAT NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFA
ULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB CCSID UNICO
DE
--- Row 6
CREATE TABLE DEMOID.DSN_STATEMENT_CACHE_TABLE ("STMT_ID" INTEGER NOT NULL, "STMT_TOKEN" VARCHAR(240), "COLLID" VARCHAR(128) NOT NUL
L, "PROGRAM_NAME" VARCHAR(128) NOT NULL, "INV_DROPALT" CHAR(1) NOT NULL, "INV_REVOKE" CHAR(1) NOT NULL, "INV_LRU" CHAR(1) NOT NULL,
"INV_RUNSTATS" CHAR(1) NOT NULL, "CACHED_TS" TIMESTAMP NOT NULL, "USERS" INTEGER NOT NULL, "COPIES" INTEGER NOT NULL, "LINES" INTE
GER NOT NULL, "PRIMAUTH" VARCHAR(128) NOT NULL, "CURSQLID" VARCHAR(128) NOT NULL, "BIND_QUALIFIER" VARCHAR(128) NOT NULL, "BIND_ISO
" CHAR(2) NOT NULL, "BIND_CDATA" CHAR(1) NOT NULL, "BIND_DYNRL" CHAR(1) NOT NULL, "BIND_DEGRE" CHAR(1) NOT NULL, "BIND_SQLRL" CHAR(
1) NOT NULL, "BIND_CHOLD" CHAR(1) NOT NULL, "STAT_TS" TIMESTAMP NOT NULL, "STAT_EXEC" INTEGER NOT NULL, "STAT_GPAG" INTEGER NOT NUL
L, "STAT_SYNR" INTEGER NOT NULL, "STAT_WRIT" INTEGER NOT NULL, "STAT_EROW" INTEGER NOT NULL, "STAT_PROW" INTEGER NOT NULL, "STAT_SO
RT" INTEGER NOT NULL, "STAT_INDX" INTEGER NOT NULL, "STAT_RSCN" INTEGER NOT NULL, "STAT_PGRP" INTEGER NOT NULL, "STAT_ELAP" FLOAT N
OT NULL, "STAT_CPU" FLOAT NOT NULL, "STAT_SUS_SYNIO" FLOAT NOT NULL, "STAT_SUS_LOCK" FLOAT NOT NULL, "STAT_SUS_SWIT" FLOAT NOT NULL
, "STAT_SUS_GLCK" FLOAT NOT NULL, "STAT_SUS_OTHR" FLOAT NOT NULL, "STAT_SUS_OTHW" FLOAT NOT NULL, "STAT_RIDLIMT" INTEGER NOT NULL,
"STAT_RIDSTOR" INTEGER NOT NULL, "EXPLAIN_TS" TIMESTAMP NOT NULL, "SCHEMA" VARCHAR(128) NOT NULL, "STMT_TEXT" CLOB(2M) NOT NULL, "S
TMT_ROWID" ROWID NOT NULL GENERATED ALWAYS, "BIND_RO_TYPE" CHAR(1) NOT NULL WITH DEFAULT, "BIND_RA_TOT" INTEGER NOT NULL WITH DEFAU
LT, "GROUP_MEMBER" VARCHAR(24) NOT NULL WITH DEFAULT, "STAT_EXECB" BIGINT NOT NULL WITH DEFAULT, "STAT_GPAGB" BIGINT NOT NULL WITH
DEFAULT, "STAT_SYNRB" BIGINT NOT NULL WITH DEFAULT, "STAT_WRITB" BIGINT NOT NULL WITH DEFAULT, "STAT_EROWB" BIGINT NOT NULL WITH DE
FAULT, "STAT_PROWB" BIGINT NOT NULL WITH DEFAULT, "STAT_SORTB" BIGINT NOT NULL WITH DEFAULT, "STAT_INDXB" BIGINT NOT NULL WITH DEFA
ULT, "STAT_RSCNB" BIGINT NOT NULL WITH DEFAULT, "STAT_PGRPB" BIGINT NOT NULL WITH DEFAULT, "STAT_RIDLIMTB" BIGINT NOT NULL WITH DEF
AULT, "STAT_RIDSTORB" BIGINT NOT NULL WITH DEFAULT, "LITERAL_REPL" CHAR(1) NOT NULL WITH DEFAULT, "STAT_SUS_LATCH" FLOAT NOT NULL W
ITH DEFAULT, "STAT_SUS_PLATCH" FLOAT NOT NULL WITH DEFAULT, "STAT_SUS_DRAIN" FLOAT NOT NULL WITH DEFAULT, "STAT_SUS_CLAIM" FLOAT NO
T NULL WITH DEFAULT, "STAT_SUS_LOG" FLOAT NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMO
DB CCSID UNICODE
--- Row 7
CREATE INDEX DEMOID.DSN_STATEMENT_CACHE_IDX1 ON DEMOID.DSN_STATEMENT_CACHE_TABLE ("STMT_ID" ASC)
--- Row 8
CREATE INDEX DEMOID.DSN_STATEMENT_CACHE_IDX2 ON DEMOID.DSN_STATEMENT_CACHE_TABLE ("STMT_TOKEN" ASC) CLUSTER
--- Row 9
CREATE INDEX DEMOID.DSN_STATEMENT_CACHE_IDX3 ON DEMOID.DSN_STATEMENT_CACHE_TABLE ("EXPLAIN_TS" DESC)
1--- Row 10
CREATE TABLE DEMOID.DSN_PREDICAT_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "APPLNAME" VARCHAR(24) NOT NULL,
"PROGNAME" VARCHAR(128) NOT NULL, "PREDNO" INTEGER NOT NULL, "TYPE" CHAR(8) NOT NULL, "LEFT_HAND_SIDE" VARCHAR(128) NOT NULL, "LEFT
_HAND_PNO" INTEGER NOT NULL, "LHS_TABNO" SMALLINT NOT NULL, "LHS_QBNO" SMALLINT NOT NULL, "RIGHT_HAND_SIDE" VARCHAR(128) NOT NULL,
"RIGHT_HAND_PNO" INTEGER NOT NULL, "RHS_TABNO" SMALLINT NOT NULL, "RHS_QBNO" SMALLINT NOT NULL, "FILTER_FACTOR" FLOAT NOT NULL, "BO
OLEAN_TERM" CHAR(1) NOT NULL, "SEARCHARG" CHAR(1) NOT NULL, "JOIN" CHAR(1) NOT NULL, "AFTER_JOIN" CHAR(1) NOT NULL, "ADDED_PRED" CH
AR(1) NOT NULL, "REDUNDANT_PRED" CHAR(1) NOT NULL, "DIRECT_ACCESS" CHAR(1) NOT NULL, "KEYFIELD" CHAR(1) NOT NULL, "EXPLAIN_TIME" TI
MESTAMP NOT NULL, "CATEGORY" SMALLINT NOT NULL, "CATEGORY_B" SMALLINT NOT NULL, "TEXT" VARCHAR(2000) NOT NULL, "PRED_ENCODE" CHAR(1
) NOT NULL WITH DEFAULT, "PRED_CCSID" SMALLINT NOT NULL WITH DEFAULT, "PRED_MCCSID" SMALLINT NOT NULL WITH DEFAULT, "MARKER" CHAR(1
) NOT NULL WITH DEFAULT, "PARENT_PNO" INTEGER NOT NULL, "NEGATION" CHAR(1) NOT NULL, "LITERALS" VARCHAR(128) NOT NULL, "CLAUSE" CHA
R(8) NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "ORIGIN" CHAR(1) NOT NULL WITH DEFAULT, "UNCERTAINTY" FLOAT(4) NOT NULL WITH DE
FAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH D
EFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 11
CREATE INDEX DEMOID.DSN_PREDICAT_TABLE_IDX1 ON DEMOID.DSN_PREDICAT_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 12
CREATE INDEX DEMOID.DSN_PREDICAT_TABLE_IDX2 ON DEMOID.DSN_PREDICAT_TABLE ("QUERYNO", "PREDNO")
--- Row 13
CREATE TABLE DEMOID.DSN_STRUCT_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "APPLNAME" VARCHAR(24) NOT NULL, "P
ROGNAME" VARCHAR(128) NOT NULL, "PARENT" SMALLINT NOT NULL, "TIMES" FLOAT NOT NULL, "ROWCOUNT" INTEGER NOT NULL, "ATOPEN" CHAR(1) N
OT NULL, "CONTEXT" CHAR(10) NOT NULL, "ORDERNO" SMALLINT NOT NULL, "DOATOPEN_PARENT" SMALLINT NOT NULL, "QBLOCK_TYPE" CHAR(6) NOT N
ULL WITH DEFAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "QUERY_STAGE" CHAR(8) NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "ORIGIN"
CHAR(1) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARC
HAR(122) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 14
CREATE INDEX DEMOID.DSN_STRUCT_TABLE_IDX1 ON DEMOID.DSN_STRUCT_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 15
CREATE TABLE DEMOID.DSN_PGROUP_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "PLANNAME" VARCHAR(24) NOT NULL, "C
OLLID" VARCHAR(128) NOT NULL, "PROGNAME" VARCHAR(128) NOT NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "VERSION" VARCHAR(122) NOT NULL,
"GROUPID" SMALLINT NOT NULL, "FIRSTPLAN" SMALLINT NOT NULL, "LASTPLAN" SMALLINT NOT NULL, "CPUCOST" FLOAT(4) NOT NULL, "IOCOST" FL
OAT(4) NOT NULL, "BESTTIME" FLOAT(4) NOT NULL, "DEGREE" SMALLINT NOT NULL, "MODE" CHAR(1) NOT NULL, "REASON" SMALLINT NOT NULL, "LO
CALCPU" SMALLINT NOT NULL, "TOTALCPU" SMALLINT NOT NULL, "FIRSTBASE" SMALLINT, "LARGETS" CHAR(1), "PARTKIND" CHAR(1), "GROUPTYPE" C
HAR(3), "ORDER" CHAR(1), "STYLE" CHAR(4), "RANGEKIND" CHAR(1), "NKEYCOLS" SMALLINT, "LOWBOUND" VARCHAR(40) FOR BIT DATA, "HIGHBOUND
" VARCHAR(40) FOR BIT DATA, "LOWKEY" VARCHAR(40) FOR BIT DATA, "HIGHKEY" VARCHAR(40) FOR BIT DATA, "FIRSTPAGE" CHAR(4) FOR BIT DATA
, "LASTPAGE" CHAR(4) FOR BIT DATA, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "HOST_REASON" SMALLINT, "PARA_TYPE" CHAR(4), "PART_INNER" C
HAR(1), "GRNU_KEYRNG" CHAR(1), "OPEN_KEYRNG" CHAR(1), "APPLNAME" VARCHAR(24) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH
DEFAULT, "STRAW_MODEL" CHAR(1) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATIL
E CCSID UNICODE
--- Row 16
CREATE INDEX DEMOID.DSN_PGROUP_TABLE_IDX1 ON DEMOID.DSN_PGROUP_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 17
CREATE TABLE DEMOID.DSN_PTASK_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "PGDNO" SMALLINT NOT NULL, "APPLNAME
" VARCHAR(24) NOT NULL, "PROGNAME" VARCHAR(128) NOT NULL, "LPTNO" SMALLINT NOT NULL, "KEYCOLID" SMALLINT, "DPSI" CHAR(1) NOT NULL,
"LPTLOKEY" VARCHAR(40) FOR BIT DATA, "LPTHIKEY" VARCHAR(40) FOR BIT DATA, "LPTLOPAG" CHAR(4) FOR BIT DATA, "LPTHIPAG" CHAR(4) FOR B
IT DATA, "LPTLOPG" CHAR(4) FOR BIT DATA, "LPTHIPG" CHAR(4) FOR BIT DATA, "LPTLOPT" SMALLINT, "LPTHIPT" SMALLINT, "KEYCOLDT" SMALLIN
T, "KEYCOLPREC" SMALLINT, "KEYCOLSCAL" SMALLINT, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNOI"
INTEGER NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "EXPANSIO
N_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 18
CREATE INDEX DEMOID.DSN_PTASK_TABLE_IDX1 ON DEMOID.DSN_PTASK_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 19
CREATE TABLE DEMOID.DSN_FILTER_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "PLANNO" SMALLINT NOT NULL, "APPLNA
ME" VARCHAR(24) NOT NULL, "PROGNAME" VARCHAR(128) NOT NULL, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "ORDERNO" INTEGER NOT NULL
, "PREDNO" INTEGER NOT NULL, "STAGE" CHAR(9) NOT NULL, "ORDERCLASS" INTEGER NOT NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "MIXOPSEQN
O" SMALLINT NOT NULL, "REEVAL" CHAR(1) NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "VER
SION" VARCHAR(122) NOT NULL WITH DEFAULT, "PUSHDOWN" CHAR(1) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAUL
1T) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 20
CREATE INDEX DEMOID.DSN_FILTER_TABLE_IDX1 ON DEMOID.DSN_FILTER_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 21
CREATE TABLE DEMOID.DSN_DETCOST_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "APPLNAME" VARCHAR(24) NOT NULL, "
PROGNAME" VARCHAR(128) NOT NULL, "PLANNO" SMALLINT NOT NULL, "OPENIO" FLOAT(4) NOT NULL, "OPENCPU" FLOAT(4) NOT NULL, "OPENCOST" FL
OAT(4) NOT NULL, "DMIO" FLOAT(4) NOT NULL, "DMCPU" FLOAT(4) NOT NULL, "DMTOT" FLOAT(4) NOT NULL, "SUBQIO" FLOAT(4) NOT NULL, "SUBQC
PU" FLOAT(4) NOT NULL, "SUBQCOST" FLOAT(4) NOT NULL, "BASEIO" FLOAT(4) NOT NULL, "BASECPU" FLOAT(4) NOT NULL, "BASETOT" FLOAT(4) NO
T NULL, "ONECOMPROWS" FLOAT(4) NOT NULL, "IMLEAF" FLOAT(4) NOT NULL, "IMIO" FLOAT(4) NOT NULL, "IMPREFH" CHAR(2) NOT NULL, "IMMPRED
" INTEGER NOT NULL, "IMFF" FLOAT(4) NOT NULL, "IMSRPRED" INTEGER NOT NULL, "IMFFADJ" FLOAT(4) NOT NULL, "IMSCANCST" FLOAT(4) NOT NU
LL, "IMROWCST" FLOAT(4) NOT NULL, "IMPAGECST" FLOAT(4) NOT NULL, "IMRIDSORT" FLOAT(4) NOT NULL, "IMMERGCST" FLOAT(4) NOT NULL, "IMC
PU" FLOAT(4) NOT NULL, "IMTOT" FLOAT(4) NOT NULL, "IMSEQNO" SMALLINT NOT NULL, "DMPREFH" CHAR(2) NOT NULL, "DMCLUDIO" FLOAT(4) NOT
NULL, "DMNCLUDIO" FLOAT(4) NOT NULL, "DMPREDS" INTEGER NOT NULL, "DMSROWS" FLOAT(4) NOT NULL, "DMSCANCST" FLOAT(4) NOT NULL, "DMCOL
S" SMALLINT NOT NULL, "DMROWS" FLOAT(4) NOT NULL, "RDSROWCST" FLOAT(4) NOT NULL, "DMPAGECST" FLOAT(4) NOT NULL, "DMDATAIO" FLOAT(4)
NOT NULL, "DMDATACPU" FLOAT(4) NOT NULL, "DMDATATOT" FLOAT(4) NOT NULL, "RDSROW" FLOAT(4) NOT NULL, "SNCOLS" SMALLINT NOT NULL, "S
NROWS" FLOAT(4) NOT NULL, "SNRECSZ" INTEGER NOT NULL, "SNPAGES" FLOAT(4) NOT NULL, "SNRUNS" FLOAT(4) NOT NULL, "SNMERGES" FLOAT(4)
NOT NULL, "SNIOCOST" FLOAT(4) NOT NULL, "SNCPUCOST" FLOAT(4) NOT NULL, "SNCOST" FLOAT(4) NOT NULL, "SNSCANIO" FLOAT(4) NOT NULL, "S
NSCANCPU" FLOAT(4) NOT NULL, "SNSCANCOST" FLOAT(4) NOT NULL, "SCCOLS" SMALLINT NOT NULL, "SCROWS" FLOAT(4) NOT NULL, "SCRECSZ" INTE
GER NOT NULL, "SCPAGES" FLOAT(4) NOT NULL, "SCRUNS" FLOAT(4) NOT NULL, "SCMERGES" FLOAT(4) NOT NULL, "SCIOCOST" FLOAT(4) NOT NULL,
"SCCPUCOST" FLOAT(4) NOT NULL, "SCCOST" FLOAT(4) NOT NULL, "SCSCANIO" FLOAT(4) NOT NULL, "SCSCANCPU" FLOAT(4) NOT NULL, "SCSCANCOST
" FLOAT(4) NOT NULL, "COMPCARD" FLOAT(4) NOT NULL, "COMPIOCOST" FLOAT(4) NOT NULL, "COMPCPUCOST" FLOAT(4) NOT NULL, "COMPCOST" FLOA
T(4) NOT NULL, "JOINCOLS" SMALLINT NOT NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "COSTBLK" INTEGER NOT NULL, "COSTSTOR" INTEGER NOT
NULL, "MPBLK" INTEGER NOT NULL, "MPSTOR" INTEGER NOT NULL, "COMPOSITES" INTEGER NOT NULL, "CLIPPED" INTEGER NOT NULL, "PARTITION" I
NTEGER NOT NULL, "TABREF" VARCHAR(64) NOT NULL FOR BIT DATA, "MAX_COMPOSITES" INTEGER NOT NULL, "MAX_STOR" INTEGER NOT NULL, "MAX_C
PU" INTEGER NOT NULL, "MAX_ELAP" INTEGER NOT NULL, "TBL_JOINED_THRESH" INTEGER NOT NULL, "STOR_USED" INTEGER NOT NULL, "CPU_USED" I
NTEGER NOT NULL, "ELAPSED" INTEGER NOT NULL, "MIN_CARD_KEEP" FLOAT(4) NOT NULL, "MAX_CARD_KEEP" FLOAT(4) NOT NULL, "MIN_COST_KEEP"
FLOAT(4) NOT NULL, "MAX_COST_KEEP" FLOAT(4) NOT NULL, "MIN_VALUE_KEEP" FLOAT(4) NOT NULL, "MIN_VALUE_CARD_KEEP" FLOAT(4) NOT NULL,
"MIN_VALUE_COST_KEEP" FLOAT(4) NOT NULL, "MAX_VALUE_KEEP" FLOAT(4) NOT NULL, "MAX_VALUE_CARD_KEEP" FLOAT(4) NOT NULL, "MAX_VALUE_CO
ST_KEEP" FLOAT(4) NOT NULL, "MIN_CARD_CLIP" FLOAT(4) NOT NULL, "MAX_CARD_CLIP" FLOAT(4) NOT NULL, "MIN_COST_CLIP" FLOAT(4) NOT NULL
, "MAX_COST_CLIP" FLOAT(4) NOT NULL, "MIN_VALUE_CLIP" FLOAT(4) NOT NULL, "MIN_VALUE_CARD_CLIP" FLOAT(4) NOT NULL, "MIN_VALUE_COST_C
LIP" FLOAT(4) NOT NULL, "MAX_VALUE_CLIP" FLOAT(4) NOT NULL, "MAX_VALUE_CARD_CLIP" FLOAT(4) NOT NULL, "MAX_VALUE_COST_CLIP" FLOAT(4)
NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "PSEQIOCOST" FLOAT(4) NOT NULL, "PSEQCPUCOST" FLOAT(4) NOT NULL, "PSEQCOST" FLOAT(4
) NOT NULL, "PADJIOCOST" FLOAT(4) NOT NULL, "PADJCPUCOST" FLOAT(4) NOT NULL, "PADJCOST" FLOAT(4) NOT NULL, "UNCERTAINTY" FLOAT(4) N
OT NULL WITH DEFAULT, "UNCERTAINTY_1T" FLOAT(4) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "COLLID" VARCHAR(12
8) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "IMNP" FLOAT(4) NOT NULL WITH DEFAULT, "DMNP" FLOAT(4) NOT
NULL WITH DEFAULT, "IMJC" FLOAT(4) NOT NULL WITH DEFAULT, "IMFC" FLOAT(4) NOT NULL WITH DEFAULT, "IMJBC" FLOAT(4) NOT NULL WITH DEF
AULT, "IMJFC" FLOAT(4) NOT NULL WITH DEFAULT, "CRED" INTEGER NOT NULL WITH DEFAULT, "IXSCAN_SKIP_DUPS" CHAR(1) NOT NULL WITH DEFAUL
T 'N', "IXSCAN_SKIP_SCREEN" CHAR(1) NOT NULL WITH DEFAULT 'N', "EARLY_OUT" CHAR(1) NOT NULL WITH DEFAULT ' ', "EXPANSION_REASON" CH
AR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 22
CREATE INDEX DEMOID.DSN_DETCOST_TABLE_IDX1 ON DEMOID.DSN_DETCOST_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 23
CREATE TABLE DEMOID.DSN_SORT_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "PLANNO" SMALLINT NOT NULL, "APPLNAME
" VARCHAR(24) NOT NULL, "PROGNAME" VARCHAR(128) NOT NULL, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "SORTC" CHAR(5) NOT NULL WIT
H DEFAULT, "SORTN" CHAR(5) NOT NULL WITH DEFAULT, "SORTNO" SMALLINT NOT NULL, "KEYSIZE" SMALLINT NOT NULL, "ORDERCLASS" INTEGER NOT
NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "VERSION" V
ARCHAR(122) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 24
CREATE INDEX DEMOID.DSN_SORT_TABLE_IDX1 ON DEMOID.DSN_SORT_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 25
CREATE TABLE DEMOID.DSN_SORTKEY_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "PLANNO" SMALLINT NOT NULL, "APPLN
AME" VARCHAR(24) NOT NULL, "PROGNAME" VARCHAR(128) NOT NULL, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "SORTNO" SMALLINT NOT NUL
L, "ORDERNO" SMALLINT NOT NULL, "EXPTYPE" CHAR(3) NOT NULL, "TEXT" VARCHAR(128) NOT NULL, "TABNO" SMALLINT NOT NULL, "COLNO" SMALLI
NT NOT NULL, "DATATYPE" CHAR(18) NOT NULL, "LENGTH" INTEGER NOT NULL, "CCSID" INTEGER NOT NULL, "ORDERCLASS" INTEGER NOT NULL, "EXP
LAIN_TIME" TIMESTAMP NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122)
NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
1--- Row 26
CREATE INDEX DEMOID.DSN_SORTKEY_TABLE_IDX1 ON DEMOID.DSN_SORTKEY_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 27
CREATE TABLE DEMOID.DSN_PGRANGE_TABLE ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "TABNO" SMALLINT NOT NULL, "RANGE"
SMALLINT NOT NULL, "FIRSTPART" SMALLINT NOT NULL, "LASTPART" SMALLINT NOT NULL, "NUMPARTS" SMALLINT NOT NULL, "EXPLAIN_TIME" TIMES
TAMP NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "APPLNAME" VARCHAR(24) NOT NULL WITH D
EFAULT, "PROGNAME" VARCHAR(128) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL
WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 28
CREATE INDEX DEMOID.DSN_PGRANGE_TABLE_IDX1 ON DEMOID.DSN_PGRANGE_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 29
CREATE TABLE DEMOID.DSN_VIEWREF_TABLE ("QUERYNO" INTEGER NOT NULL WITH DEFAULT, "APPLNAME" VARCHAR(24) NOT NULL WITH DEFAULT, "PROG
NAME" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT
, "CREATOR" VARCHAR(128) NOT NULL WITH DEFAULT, "NAME" VARCHAR(128) NOT NULL WITH DEFAULT, "TYPE" CHAR(1) NOT NULL WITH DEFAULT, "M
QTUSE" SMALLINT NOT NULL WITH DEFAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "SECTNO
I" INTEGER NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VOLATILE CCSID UNICODE
--- Row 30
CREATE INDEX DEMOID.DSN_VIEWREF_TABLE_IDX1 ON DEMOID.DSN_VIEWREF_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 31
CREATE TABLE DEMOID.DSN_QUERY_TABLE ("QUERYNO" INTEGER NOT NULL, "TYPE" CHAR(8) NOT NULL, "QUERY_STAGE" CHAR(8) NOT NULL, "SEQNO" I
NTEGER NOT NULL, "NODE_DATA" CLOB(2M) NOT NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "QUERY_ROWID" ROWID NOT NULL GENERATED BY DEFAUL
T, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "HASHKEY" INTEGER NOT NULL, "HAS_PRED" CHAR(1) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DE
FAULT, "APPLNAME" VARCHAR(24) NOT NULL WITH DEFAULT, "PROGNAME" VARCHAR(128) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL
WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB VO
LATILE CCSID UNICODE
--- Row 32
CREATE INDEX DEMOID.DSN_QUERY_TABLE_IDX1 ON DEMOID.DSN_QUERY_TABLE ("QUERYNO", "EXPLAIN_TIME")
--- Row 33
CREATE INDEX DEMOID.DSN_QUERY_TABLE_IDX2 ON DEMOID.DSN_QUERY_TABLE ("QUERYNO", "TYPE", "QUERY_STAGE", "EXPLAIN_TIME", "SEQNO")
--- Row 34
CREATE UNIQUE INDEX DEMOID.DSN_QUERY_TABLE_IDX3 ON DEMOID.DSN_QUERY_TABLE ("QUERY_ROWID")
--- Row 35
CREATE TABLE DEMOID.DSN_QUERYINFO_TABLE ("QUERYNO" INTEGER NOT NULL WITH DEFAULT, "QBLOCKNO" SMALLINT NOT NULL WITH DEFAULT, "QINAM
E1" VARCHAR(128) NOT NULL WITH DEFAULT, "QINAME2" VARCHAR(128) NOT NULL WITH DEFAULT, "APPLNAME" VARCHAR(24) NOT NULL WITH DEFAULT,
"PROGNAME" VARCHAR(128) NOT NULL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH D
EFAULT, "GROUP_MEMBER" VARCHAR(24) NOT NULL WITH DEFAULT, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "SEQNO" INTEGER NOT NULL WITH DE
FAULT, "EXPLAIN_TIME" TIMESTAMP NOT NULL WITH DEFAULT, "TYPE" CHAR(8) NOT NULL WITH DEFAULT, "REASON_CODE" SMALLINT NOT NULL WITH D
EFAULT, "QI_DATA" CLOB(2M) NOT NULL WITH DEFAULT, "SERVICE_INFO" BLOB(2M) NOT NULL WITH DEFAULT, "QB_INFO_ROWID" ROWID NOT NULL GEN
ERATED ALWAYS, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN DATABASE DEMODB CCSID UNICODE
--- Row 36
CREATE TABLE DEMOID.DSN_VIRTUAL_INDEXES ("TBCREATOR" VARCHAR(128) NOT NULL, "TBNAME" VARCHAR(128) NOT NULL, "IXCREATOR" VARCHAR(128
) NOT NULL, "IXNAME" VARCHAR(128) NOT NULL, "ENABLE" CHAR(1) NOT NULL CHECK("ENABLE" IN ('Y','N')), "MODE" CHAR(1) NOT NULL CHECK("
MODE" IN ('C','D')), "UNIQUERULE" CHAR(1) NOT NULL CHECK("UNIQUERULE" IN ('D','U')), "COLCOUNT" SMALLINT NOT NULL CHECK("COLCOUNT"
> 0), "CLUSTERING" CHAR(1) NOT NULL CHECK("CLUSTERING" IN ('Y','N')), "NLEAF" INTEGER NOT NULL CHECK("NLEAF" >= -1), "NLEVELS" SMAL
LINT NOT NULL CHECK("NLEVELS" >= -1), "INDEXTYPE" CHAR(1) NOT NULL WITH DEFAULT CHECK("INDEXTYPE" IN ('D','2')), "PGSIZE" SMALLINT
NOT NULL CHECK("PGSIZE" IN (4, 8, 16, 32)), "FIRSTKEYCARDF" FLOAT NOT NULL WITH DEFAULT -1 CHECK("FIRSTKEYCARDF" = -1 OR "FIRSTKEYC
ARDF" >= 0), "FULLKEYCARDF" FLOAT NOT NULL WITH DEFAULT -1 CHECK("FULLKEYCARDF" = -1 OR "FULLKEYCARDF" >= 0), "CLUSTERRATIOF" FLOAT
NOT NULL WITH DEFAULT -1 CHECK("CLUSTERRATIOF" = -1 OR "CLUSTERRATIOF" >= 0), "PADDED" CHAR(1) NOT NULL WITH DEFAULT CHECK("PADDED
" IN (' ','Y','N')), "COLNO1" SMALLINT CHECK("COLNO1" IS NULL OR "COLNO1" > 0), "ORDERING1" CHAR(1) CHECK("ORDERING1" IS NULL OR "O
RDERING1" IN ('A','D')), "COLNO2" SMALLINT CHECK("COLNO2" IS NULL OR "COLNO2" > 0), "ORDERING2" CHAR(1) CHECK("ORDERING2" IS NULL O
R "ORDERING2" IN ('A','D')), "COLNO3" SMALLINT CHECK("COLNO3" IS NULL OR "COLNO3" > 0), "ORDERING3" CHAR(1) CHECK("ORDERING3" IS NU
LL OR "ORDERING3" IN ('A','D')), "COLNO4" SMALLINT CHECK("COLNO4" IS NULL OR "COLNO4" > 0), "ORDERING4" CHAR(1) CHECK("ORDERING4" I
S NULL OR "ORDERING4" IN ('A','D')), "COLNO5" SMALLINT CHECK("COLNO5" IS NULL OR "COLNO5" > 0), "ORDERING5" CHAR(1) CHECK("ORDERING
5" IS NULL OR "ORDERING5" IN ('A','D')), "COLNO6" SMALLINT CHECK("COLNO6" IS NULL OR "COLNO6" > 0), "ORDERING6" CHAR(1) CHECK("ORDE
RING6" IS NULL OR "ORDERING6" IN ('A','D')), "COLNO7" SMALLINT CHECK("COLNO7" IS NULL OR "COLNO7" > 0), "ORDERING7" CHAR(1) CHECK("
ORDERING7" IS NULL OR "ORDERING7" IN ('A','D')), "COLNO8" SMALLINT CHECK("COLNO8" IS NULL OR "COLNO8" > 0), "ORDERING8" CHAR(1) CHE
1CK("ORDERING8" IS NULL OR "ORDERING8" IN ('A','D')), "COLNO9" SMALLINT CHECK("COLNO9" IS NULL OR "COLNO9" > 0), "ORDERING9" CHAR(1)
CHECK("ORDERING9" IS NULL OR "ORDERING9" IN ('A','D')), "COLNO10" SMALLINT CHECK("COLNO10" IS NULL OR "COLNO10" > 0), "ORDERING10"
CHAR(1) CHECK("ORDERING10" IS NULL OR "ORDERING10" IN ('A','D')), "COLNO11" SMALLINT CHECK("COLNO11" IS NULL OR "COLNO11" > 0), "O
RDERING11" CHAR(1) CHECK("ORDERING11" IS NULL OR "ORDERING11" IN ('A','D')), "COLNO12" SMALLINT CHECK("COLNO12" IS NULL OR "COLNO12
" > 0), "ORDERING12" CHAR(1) CHECK("ORDERING12" IS NULL OR "ORDERING12" IN ('A','D')), "COLNO13" SMALLINT CHECK("COLNO13" IS NULL O
R "COLNO13" > 0), "ORDERING13" CHAR(1) CHECK("ORDERING13" IS NULL OR "ORDERING13" IN ('A','D')), "COLNO14" SMALLINT CHECK("COLNO14"
IS NULL OR "COLNO14" > 0), "ORDERING14" CHAR(1) CHECK("ORDERING14" IS NULL OR "ORDERING14" IN ('A','D')), "COLNO15" SMALLINT CHECK
("COLNO15" IS NULL OR "COLNO15" > 0), "ORDERING15" CHAR(1) CHECK("ORDERING15" IS NULL OR "ORDERING15" IN ('A','D')), "COLNO16" SMAL
LINT CHECK("COLNO16" IS NULL OR "COLNO16" > 0), "ORDERING16" CHAR(1) CHECK("ORDERING16" IS NULL OR "ORDERING16" IN ('A','D')), "COL
NO17" SMALLINT CHECK("COLNO17" IS NULL OR "COLNO17" > 0), "ORDERING17" CHAR(1) CHECK("ORDERING17" IS NULL OR "ORDERING17" IN ('A','
D')), "COLNO18" SMALLINT CHECK("COLNO18" IS NULL OR "COLNO18" > 0), "ORDERING18" CHAR(1) CHECK("ORDERING18" IS NULL OR "ORDERING18"
IN ('A','D')), "COLNO19" SMALLINT CHECK("COLNO19" IS NULL OR "COLNO19" > 0), "ORDERING19" CHAR(1) CHECK("ORDERING19" IS NULL OR "O
RDERING19" IN ('A','D')), "COLNO20" SMALLINT CHECK("COLNO20" IS NULL OR "COLNO20" > 0), "ORDERING20" CHAR(1) CHECK("ORDERING20" IS
NULL OR "ORDERING20" IN ('A','D')), "COLNO21" SMALLINT CHECK("COLNO21" IS NULL OR "COLNO21" > 0), "ORDERING21" CHAR(1) CHECK("ORDER
ING21" IS NULL OR "ORDERING21" IN ('A','D')), "COLNO22" SMALLINT CHECK("COLNO22" IS NULL OR "COLNO22" > 0), "ORDERING22" CHAR(1) CH
ECK("ORDERING22" IS NULL OR "ORDERING22" IN ('A','D')), "COLNO23" SMALLINT CHECK("COLNO23" IS NULL OR "COLNO23" > 0), "ORDERING23"
CHAR(1) CHECK("ORDERING23" IS NULL OR "ORDERING23" IN ('A','D')), "COLNO24" SMALLINT CHECK("COLNO24" IS NULL OR "COLNO24" > 0), "OR
DERING24" CHAR(1) CHECK("ORDERING24" IS NULL OR "ORDERING24" IN ('A','D')), "COLNO25" SMALLINT CHECK("COLNO25" IS NULL OR "COLNO25"
> 0), "ORDERING25" CHAR(1) CHECK("ORDERING25" IS NULL OR "ORDERING25" IN ('A','D')), "COLNO26" SMALLINT CHECK("COLNO26" IS NULL OR
"COLNO26" > 0), "ORDERING26" CHAR(1) CHECK("ORDERING26" IS NULL OR "ORDERING26" IN ('A','D')), "COLNO27" SMALLINT CHECK("COLNO27"
IS NULL OR "COLNO27" > 0), "ORDERING27" CHAR(1) CHECK("ORDERING27" IS NULL OR "ORDERING27" IN ('A','D')), "COLNO28" SMALLINT CHECK(
"COLNO28" IS NULL OR "COLNO28" > 0), "ORDERING28" CHAR(1) CHECK("ORDERING28" IS NULL OR "ORDERING28" IN ('A','D')), "COLNO29" SMALL
INT CHECK("COLNO29" IS NULL OR "COLNO29" > 0), "ORDERING29" CHAR(1) CHECK("ORDERING29" IS NULL OR "ORDERING29" IN ('A','D')), "COLN
O30" SMALLINT CHECK("COLNO30" IS NULL OR "COLNO30" > 0), "ORDERING30" CHAR(1) CHECK("ORDERING30" IS NULL OR "ORDERING30" IN ('A','D
')), "COLNO31" SMALLINT CHECK("COLNO31" IS NULL OR "COLNO31" > 0), "ORDERING31" CHAR(1) CHECK("ORDERING31" IS NULL OR "ORDERING31"
IN ('A','D')), "COLNO32" SMALLINT CHECK("COLNO32" IS NULL OR "COLNO32" > 0), "ORDERING32" CHAR(1) CHECK("ORDERING32" IS NULL OR "OR
DERING32" IN ('A','D')), "COLNO33" SMALLINT CHECK("COLNO33" IS NULL OR "COLNO33" > 0), "ORDERING33" CHAR(1) CHECK("ORDERING33" IS N
ULL OR "ORDERING33" IN ('A','D')), "COLNO34" SMALLINT CHECK("COLNO34" IS NULL OR "COLNO34" > 0), "ORDERING34" CHAR(1) CHECK("ORDERI
NG34" IS NULL OR "ORDERING34" IN ('A','D')), "COLNO35" SMALLINT CHECK("COLNO35" IS NULL OR "COLNO35" > 0), "ORDERING35" CHAR(1) CHE
CK("ORDERING35" IS NULL OR "ORDERING35" IN ('A','D')), "COLNO36" SMALLINT CHECK("COLNO36" IS NULL OR "COLNO36" > 0), "ORDERING36" C
HAR(1) CHECK("ORDERING36" IS NULL OR "ORDERING36" IN ('A','D')), "COLNO37" SMALLINT CHECK("COLNO37" IS NULL OR "COLNO37" > 0), "ORD
ERING37" CHAR(1) CHECK("ORDERING37" IS NULL OR "ORDERING37" IN ('A','D')), "COLNO38" SMALLINT CHECK("COLNO38" IS NULL OR "COLNO38"
> 0), "ORDERING38" CHAR(1) CHECK("ORDERING38" IS NULL OR "ORDERING38" IN ('A','D')), "COLNO39" SMALLINT CHECK("COLNO39" IS NULL OR
"COLNO39" > 0), "ORDERING39" CHAR(1) CHECK("ORDERING39" IS NULL OR "ORDERING39" IN ('A','D')), "COLNO40" SMALLINT CHECK("COLNO40" I
S NULL OR "COLNO40" > 0), "ORDERING40" CHAR(1) CHECK("ORDERING40" IS NULL OR "ORDERING40" IN ('A','D')), "COLNO41" SMALLINT CHECK("
COLNO41" IS NULL OR "COLNO41" > 0), "ORDERING41" CHAR(1) CHECK("ORDERING41" IS NULL OR "ORDERING41" IN ('A','D')), "COLNO42" SMALLI
NT CHECK("COLNO42" IS NULL OR "COLNO42" > 0), "ORDERING42" CHAR(1) CHECK("ORDERING42" IS NULL OR "ORDERING42" IN ('A','D')), "COLNO
43" SMALLINT CHECK("COLNO43" IS NULL OR "COLNO43" > 0), "ORDERING43" CHAR(1) CHECK("ORDERING43" IS NULL OR "ORDERING43" IN ('A','D'
)), "COLNO44" SMALLINT CHECK("COLNO44" IS NULL OR "COLNO44" > 0), "ORDERING44" CHAR(1) CHECK("ORDERING44" IS NULL OR "ORDERING44" I
N ('A','D')), "COLNO45" SMALLINT CHECK("COLNO45" IS NULL OR "COLNO45" > 0), "ORDERING45" CHAR(1) CHECK("ORDERING45" IS NULL OR "ORD
ERING45" IN ('A','D')), "COLNO46" SMALLINT CHECK("COLNO46" IS NULL OR "COLNO46" > 0), "ORDERING46" CHAR(1) CHECK("ORDERING46" IS NU
LL OR "ORDERING46" IN ('A','D')), "COLNO47" SMALLINT CHECK("COLNO47" IS NULL OR "COLNO47" > 0), "ORDERING47" CHAR(1) CHECK("ORDERIN
G47" IS NULL OR "ORDERING47" IN ('A','D')), "COLNO48" SMALLINT CHECK("COLNO48" IS NULL OR "COLNO48" > 0), "ORDERING48" CHAR(1) CHEC
K("ORDERING48" IS NULL OR "ORDERING48" IN ('A','D')), "COLNO49" SMALLINT CHECK("COLNO49" IS NULL OR "COLNO49" > 0), "ORDERING49" CH
AR(1) CHECK("ORDERING49" IS NULL OR "ORDERING49" IN ('A','D')), "COLNO50" SMALLINT CHECK("COLNO50" IS NULL OR "COLNO50" > 0), "ORDE
RING50" CHAR(1) CHECK("ORDERING50" IS NULL OR "ORDERING50" IN ('A','D')), "COLNO51" SMALLINT CHECK("COLNO51" IS NULL OR "COLNO51" >
0), "ORDERING51" CHAR(1) CHECK("ORDERING51" IS NULL OR "ORDERING51" IN ('A','D')), "COLNO52" SMALLINT CHECK("COLNO52" IS NULL OR "
COLNO52" > 0), "ORDERING52" CHAR(1) CHECK("ORDERING52" IS NULL OR "ORDERING52" IN ('A','D')), "COLNO53" SMALLINT CHECK("COLNO53" IS
NULL OR "COLNO53" > 0), "ORDERING53" CHAR(1) CHECK("ORDERING53" IS NULL OR "ORDERING53" IN ('A','D')), "COLNO54" SMALLINT CHECK("C
OLNO54" IS NULL OR "COLNO54" > 0), "ORDERING54" CHAR(1) CHECK("ORDERING54" IS NULL OR "ORDERING54" IN ('A','D')), "COLNO55" SMALLIN
T CHECK("COLNO55" IS NULL OR "COLNO55" > 0), "ORDERING55" CHAR(1) CHECK("ORDERING55" IS NULL OR "ORDERING55" IN ('A','D')), "COLNO5
6" SMALLINT CHECK("COLNO56" IS NULL OR "COLNO56" > 0), "ORDERING56" CHAR(1) CHECK("ORDERING56" IS NULL OR "ORDERING56" IN ('A','D')
), "COLNO57" SMALLINT CHECK("COLNO57" IS NULL OR "COLNO57" > 0), "ORDERING57" CHAR(1) CHECK("ORDERING57" IS NULL OR "ORDERING57" IN
('A','D')), "COLNO58" SMALLINT CHECK("COLNO58" IS NULL OR "COLNO58" > 0), "ORDERING58" CHAR(1) CHECK("ORDERING58" IS NULL OR "ORDE
RING58" IN ('A','D')), "COLNO59" SMALLINT CHECK("COLNO59" IS NULL OR "COLNO59" > 0), "ORDERING59" CHAR(1) CHECK("ORDERING59" IS NUL
L OR "ORDERING59" IN ('A','D')), "COLNO60" SMALLINT CHECK("COLNO60" IS NULL OR "COLNO60" > 0), "ORDERING60" CHAR(1) CHECK("ORDERING
160" IS NULL OR "ORDERING60" IN ('A','D')), "COLNO61" SMALLINT CHECK("COLNO61" IS NULL OR "COLNO61" > 0), "ORDERING61" CHAR(1) CHECK
("ORDERING61" IS NULL OR "ORDERING61" IN ('A','D')), "COLNO62" SMALLINT CHECK("COLNO62" IS NULL OR "COLNO62" > 0), "ORDERING62" CHA
R(1) CHECK("ORDERING62" IS NULL OR "ORDERING62" IN ('A','D')), "COLNO63" SMALLINT CHECK("COLNO63" IS NULL OR "COLNO63" > 0), "ORDER
ING63" CHAR(1) CHECK("ORDERING63" IS NULL OR "ORDERING63" IN ('A','D')), "COLNO64" SMALLINT CHECK("COLNO64" IS NULL OR "COLNO64" >
0), "ORDERING64" CHAR(1) CHECK("ORDERING64" IS NULL OR "ORDERING64" IN ('A','D')), "KEYTARGET_COUNT" SMALLINT NOT NULL WITH DEFAULT
CHECK("KEYTARGET_COUNT" >= 0), "UNIQUE_COUNT" SMALLINT NOT NULL WITH DEFAULT CHECK("UNIQUE_COUNT" >= 0), "IX_EXTENSION_TYPE" CHAR(
1) NOT NULL WITH DEFAULT CHECK("IX_EXTENSION_TYPE" IN (' ','S','V')), "DATAREPEATFACTORF" FLOAT NOT NULL WITH DEFAULT -1 CHECK("DAT
AREPEATFACTORF" = -1 OR "DATAREPEATFACTORF" >= 1), "SPARSE" CHAR(1) NOT NULL WITH DEFAULT 'N' CHECK("SPARSE" IN ('N','Y','X'))) IN
DATABASE DEMODB CCSID UNICODE
--- Row 37
CREATE INDEX DEMOID.DSN_VIRTUAL_INDEXES_IDX1 ON DEMOID.DSN_VIRTUAL_INDEXES ("TBCREATOR", "TBNAME")
--- Row 38
CREATE TABLE DEMOID.DSN_COLDIST_TABLE ("QUERYNO" INTEGER NOT NULL, "APPLNAME" VARCHAR(128) NOT NULL, "PROGNAME" VARCHAR(128) NOT NU
LL, "COLLID" VARCHAR(128) NOT NULL, "GROUP_MEMBER" VARCHAR(128) NOT NULL, "SECTNOI" INTEGER NOT NULL, "VERSION" VARCHAR(122) NOT NU
LL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "SCHEMA" VARCHAR(128) NOT NULL, "TBNAME" VARCHAR(128) NOT NULL, "NAME" VARCHAR(128) NOT NULL
, "COLVALUE" VARCHAR(2000) NOT NULL FOR BIT DATA, "TYPE" CHAR(1) NOT NULL, "CARDF" FLOAT NOT NULL, "COLGROUPCOLNO" VARCHAR(254) NOT
NULL FOR BIT DATA, "NUMCOLUMNS" SMALLINT NOT NULL, "FREQUENCYF" FLOAT NOT NULL, "QUANTILENO" SMALLINT NOT NULL, "LOWVALUE" VARCHAR
(2000) NOT NULL FOR BIT DATA, "HIGHVALUE" VARCHAR(2000) NOT NULL FOR BIT DATA, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN
DATABASE DEMODB CCSID UNICODE
--- Row 39
CREATE TABLE DEMOID.DSN_KEYTGTDIST_TABLE ("QUERYNO" INTEGER NOT NULL, "APPLNAME" VARCHAR(128) NOT NULL, "PROGNAME" VARCHAR(128) NOT
NULL, "COLLID" VARCHAR(128) NOT NULL, "GROUP_MEMBER" VARCHAR(128) NOT NULL, "SECTNOI" INTEGER NOT NULL, "VERSION" VARCHAR(122) NOT
NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "IXSCHEMA" VARCHAR(128) NOT NULL, "IXNAME" VARCHAR(128) NOT NULL, "KEYSEQ" VARCHAR(128) N
OT NULL, "KEYVALUE" VARCHAR(2000) NOT NULL FOR BIT DATA, "TYPE" CHAR(1) NOT NULL, "CARDF" FLOAT NOT NULL, "KEYGROUPKEYNO" VARCHAR(2
54) NOT NULL FOR BIT DATA, "NUMKEYS" SMALLINT NOT NULL, "FREQUENCYF" FLOAT NOT NULL, "QUANTILENO" SMALLINT NOT NULL, "LOWVALUE" VAR
CHAR(2000) NOT NULL FOR BIT DATA, "HIGHVALUE" VARCHAR(2000) NOT NULL FOR BIT DATA, "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT
) IN DATABASE DEMODB CCSID UNICODE
--- Row 40
CREATE TABLE DEMOID.DSN_PREDICATE_SELECTIVITY ("QUERYNO" INTEGER NOT NULL, "QBLOCKNO" SMALLINT NOT NULL, "APPLNAME" VARCHAR(24) NOT
NULL, "PROGNAME" VARCHAR(128) NOT NULL, "SECTNOI" INTEGER NOT NULL WITH DEFAULT, "COLLID" VARCHAR(128) NOT NULL WITH DEFAULT, "VER
SION" VARCHAR(122) NOT NULL WITH DEFAULT, "PREDNO" INTEGER NOT NULL, "INSTANCE" SMALLINT NOT NULL, "SELECTIVITY" FLOAT NOT NULL, "W
EIGHT" FLOAT(4) NOT NULL, "ASSUMPTION" VARCHAR(128) NOT NULL, "INSERT_TIME" TIMESTAMP NOT NULL GENERATED ALWAYS FOR EACH ROW ON UPD
ATE AS ROW CHANGE TIMESTAMP, "EXPLAIN_TIME" TIMESTAMP, "REMARKS" VARCHAR(762), "EXPANSION_REASON" CHAR(2) NOT NULL WITH DEFAULT) IN
DATABASE DEMODB CCSID UNICODE
--- Row 41
CREATE INDEX DEMOID.DSN_PREDSEL_IX1 ON DEMOID.DSN_PREDICATE_SELECTIVITY ("QUERYNO")
--- Row 42
CREATE TABLE DEMOID.DSN_STAT_FEEDBACK ("QUERYNO" INTEGER NOT NULL, "APPLNAME" VARCHAR(24) NOT NULL, "PROGNAME" VARCHAR(128) NOT NUL
L, "COLLID" VARCHAR(128) NOT NULL, "GROUP_MEMBER" VARCHAR(24) NOT NULL, "EXPLAIN_TIME" TIMESTAMP NOT NULL, "SECTNOI" INTEGER NOT NU
LL WITH DEFAULT, "VERSION" VARCHAR(122) NOT NULL WITH DEFAULT, "TBCREATOR" VARCHAR(128) NOT NULL, "TBNAME" VARCHAR(128) NOT NULL, "
IXCREATOR" VARCHAR(128) NOT NULL, "IXNAME" VARCHAR(128) NOT NULL, "COLNAME" VARCHAR(128) NOT NULL, "NUMCOLUMNS" SMALLINT NOT NULL,
"COLGROUPCOLNO" VARCHAR(254) NOT NULL FOR BIT DATA, "TYPE" CHAR(1) NOT NULL, "DBNAME" VARCHAR(24) NOT NULL, "TSNAME" VARCHAR(24) NO
T NULL, "REASON" CHAR(8) NOT NULL, "REMARKS" VARCHAR(254) NOT NULL) IN DATABASE DEMODB CCSID UNICODE
--- Row 43
CREATE TABLE DEMOID.DSN_VIRTUAL_KEYTARGETS ("ENABLE" CHAR(1) NOT NULL CHECK("ENABLE" IN ('Y','N')), "IXNAME" VARCHAR(128) NOT NULL,
"IXSCHEMA" VARCHAR(128) NOT NULL, "KEYSEQ" SMALLINT NOT NULL WITH DEFAULT CHECK("KEYSEQ" >= 0), "COLNO" SMALLINT NOT NULL WITH DEF
AULT CHECK("COLNO" >= 0), "ORDERING" CHAR(1) NOT NULL CHECK("ORDERING" IN ('A')), "TYPESCHEMA" VARCHAR(128) NOT NULL, "TYPENAME" VA
RCHAR(128) NOT NULL, "LENGTH" SMALLINT NOT NULL CHECK("LENGTH" > 0), "LENGTH2" INTEGER NOT NULL CHECK("LENGTH2" >= 0), "SCALE" SMAL
LINT NOT NULL WITH DEFAULT CHECK("SCALE" >= 0), "NULLS" CHAR(1) NOT NULL WITH DEFAULT 'N' CHECK("NULLS" IN ('Y','N')), "CCSID" INTE
GER NOT NULL CHECK("CCSID" >= 0), "SUBTYPE" CHAR(1) NOT NULL CHECK("SUBTYPE" IN ('B','M','S',' ')), "DERIVED_FROM" VARCHAR(4000) NO
T NULL, "CARDF" FLOAT NOT NULL WITH DEFAULT -1 CHECK("CARDF" >= 0 OR "CARDF" = -1 OR "CARDF" = -2)) IN DATABASE DEMODB CCSID UNICOD
E
--- Row 44
CREATE TABLE DEMOID.DSN_USERQUERY_TABLE ("QUERYNO" INTEGER NOT NULL PRIMARY KEY, "SCHEMA" VARCHAR(128) NOT NULL WITH DEFAULT ' ', "
HINT_SCOPE" SMALLINT NOT NULL WITH DEFAULT 0, "QUERY_TEXT" CLOB(2M) NOT NULL, "QUERY_ROWID" ROWID NOT NULL GENERATED ALWAYS, "QUERY
ID" BIGINT NOT NULL WITH DEFAULT 0, "USERFILTER" CHAR(8) NOT NULL WITH DEFAULT ' ', "OTHER_OPTIONS" CHAR(128) NOT NULL WITH DEFAULT
1 ' ', "COLLECTION" VARCHAR(128) NOT NULL WITH DEFAULT ' ', "PACKAGE" VARCHAR(128) NOT NULL WITH DEFAULT ' ', "VERSION" VARCHAR(128)
NOT NULL WITH DEFAULT ' ', "REOPT" CHAR(1) NOT NULL WITH DEFAULT ' ', "STARJOIN" CHAR(1) NOT NULL WITH DEFAULT ' ', "MAX_PAR_DEGRE
E" INTEGER NOT NULL WITH DEFAULT -1, "DEF_CURR_DEGREE" CHAR(3) NOT NULL WITH DEFAULT ' ', "SJTABLES" INTEGER NOT NULL WITH DEFAULT
-1, "OTHER_PARMS" VARCHAR(128) NOT NULL WITH DEFAULT ' ', "SELECTVTY_OVERRIDE" CHAR(1) NOT NULL WITH DEFAULT 'N', "ACCESSPATH_HINT"
CHAR(1) NOT NULL WITH DEFAULT ' ', "OPTION_OVERRIDE" CHAR(1) NOT NULL WITH DEFAULT ' ') IN DATABASE DEMODB CCSID UNICODE
--- Row 45
CREATE UNIQUE INDEX DEMOID.DSN_USERQUERY_TABLE_IX1 ON DEMOID.DSN_USERQUERY_TABLE ("QUERYNO" ASC)
*** end ***
Aber hier nun endlich der REXX code der Prozedure XMPEXADM:
/*REXX****************************************************************/
/* XMPEXADM ..: Framework to maintain or create EXPLAIN tables in */
/* DB2 11 z/OS databases using ADMIN_EXPLAIN_MAINT. */
/*-------------------------------------------------------------------*/
/* CALLED BY..: IKJEFT01 - TSO Batch oder Online */
/* ARGUMENTS..: SSID - (must) Local/Home Subsystem */
/* MODE - RUN|PREVIEW */
/* ACTION - STANDARDIZE|..._AND_CREATE|DROP|... */
/* MGALIAS - manage aliases YES|NO */
/* TABLESET - ALL|ACCEL|DIANGOSTICS|ALL_ACCEPT() */
/* AUTHID - (must) authorization ID (CURRENT SQLID) */
/* SCHEMA - (must) schema|qaulifier (CURRENT SCHEMA)*/
/* SCHEMAALIAS- schema name for aliases */
/* DBNAME - database */
/* STGDBNAME - storage group tablespaces */
/* STGIXNAME - storage group indexespaces */
/* BP04NAME - BP 4K pages to be used */
/* BP08NAME - BP 8K pages to be used */
/* BP16NAME - BP 16K pages to be used */
/* BP32NAME - BP 32K pages to be used */
/* BPIXNAME - BP for IX pages to be used */
/* BP04LOB - BP 4K pages to be used for LOB's */
/* BP08LOB - BP 8K pages to be used for LOB's */
/* BP16LOB - BP 16K pages to be used for LOB's */
/* BP32LOB - BP 32K pages to be used for LOB's */
/* CALLS......: DSNREXX M - DB2/REXX Interface */
/* XMPABND M - Abend U0001 (Non-ISPF) */
/*-------------------------------------------------------------------*/
/* COMMENTS...: Verify that SDSNLOAD ist part of LINKLIST or already */
/* allocated to TSO session. If not, you need to */
/* dynamically allocate. (See STEPLIBX in code below!) */
/* Example of batch execution JCL: */
/* //EXADM EXEC PGM=IKJEFT1A */
/* //STEPLIB DD DSN=SDSNLOAD,DISP=SHR */
/* //SYSEXEC DD DSN=your.SYSEXEC,DISP=SHR */
/* //SYSTSPRT DD SYSOUT=* */
/* //SYSPRINT DD SYSOUT=* */
/* //SYSTSIN DD * */
/* XMPEXADM ssid [options, some must be passed] */
/* */
/*-------------------------------------------------------------------*/
/* FUNCTION...: Calls ADMIN_EXPLAIN_MAINT store procedure to */
/* maintain or create EXPLAIN tables. */
/*-------------------------------------------------------------------*/
/* HISTORY....: 29.12.14/G.Ruban - V1R0 initial edition */
/* nn.nn.2015 N.Nomen Vn.n - future amendments */
/*********************************************************************/
x = MSG("OFF")
/*********************************************************************/
/* process arguments passed to procedure */
/*********************************************************************/
parse upper arg arglist
ver = "1.0"
Numeric Digits 12
if wordpos("DEBUG",arglist)>0
then do
debug = "DEBUG"
arglist = delword(arglist,wordpos("DEBUG",arglist))
TRACE ?I
SQLTRACE = "TRACE"
end
/*********************************************************************/
/* Some environment information and initialzations */
/*********************************************************************/
PARSE SOURCE,
source_host_env,
source_call_type,
source_uc_exec_name,
source_hostdd,
source_hostdsn,
source_nf_exec_name,
source_initial_cmd_env,
source_asid_name
jobnamestep = Get_Jobname()
sysvar_sysuid = SYSVAR("SYSUID")
sysvar_sysenv = SYSVAR("SYSENV")
/*********************************************************************/
/* Header */
/*********************************************************************/
"CLRSCRN"
say copies("#",79)
say "# XMPEXADM V"ver" - Maintain or Create DB2 EXPLAIN Tables",
" "date("O")" "time()" #";
say copies("#",79)
say ""
/*********************************************************************/
/* Check required environment */
/*********************************************************************/
if (source_host_env ^= "TSO") then do
Say "Wrong host environment" source_host_env
signal error
end
/*********************************************************************/
/* split and check arguments */
/*********************************************************************/
parse var arglist ssid "," mode "," action "," mgalias ",",
tableset "," authid "," schema "," schemaalias ",",
dbname "," stgdbname "," stgixname "," bp04name ",",
bp08name "," bp16name "," bp32name "," bpixname ",",
bp04lob "," bp08lob "," bp16lob "," bp32lob
if ssid = ""
then do
say "DB2 Subsystem not specified."
signal syntax
end
if authid = ""
then do
say "XMPEXADM ...: Following values have been set for ADMIN_EXPLAIN_MAINT"
say "DB2 SSID ...:" ssid
say "Mode .......:" mode
say "Action .....:" action
say "Manage alias:" mgalias
say "Table Set ..:" tableset
say "Auth ID not specified."
signal syntax
end
if schema = ""
then do
say "XMPEXADM ...: Following values have been set for ADMIN_EXPLAIN_MAINT"
say "DB2 SSID ...:" ssid
say "Mode .......:" mode
say "Action .....:" action
say "Manage alias:" mgalias
say "Table Set ..:" tableset
say "Authid .....:" authid
say "EXPLAIN Table Schema not specified."
signal syntax
end
say "XMPEXADM ...: Following values have been set for ADMIN_EXPLAIN_MAINT"
say "DB2 SSID ...:" ssid
say "Mode .......:" mode
say "Action .....:" action
say "Manage alias:" mgalias
say "Table Set ..:" tableset
say "Authid .....:" authid
say "Schema .....:" schema
say "Schema Alias:" schemaalias
say "Database ...:" dbname
say "Storage Grp :" stgdbname
say "StGrp Index :" stgixname
say "BP 4K ......:" bp04name
say "BP 8K ......:" bp08name
say "BP 16K .....:" bp16name
say "BP 32K .....:" bp32name
say "BP IX pages :" bpixname
say "BP 4K LOB ..:" bp04lob
say "BP 8K LOB ..:" bp08lob
say "BP 16K LOB .:" bp16lob
say "BP 32K LOB .:" bp32lob
say ""
/*********************************************************************/
/* If DB2 Load Library is not part of z/OS LINKLIST: */
/* Allocate SDSNLOAD using CA TSOPLUS (or any other software tool */
/* which adds the DB2 load libray dynamically to the STEPLIB). */
/*********************************************************************/
address TSO
"FREE FI(STEPLIBX) DA('IZS.DSN."ssid".SDSNLOAD')"
"ALLOC FI(STEPLIBX) DA('IZS.DSN."ssid".SDSNLOAD') SHR REUSE"
if rc <> 0
then do
say "DB2 SDSNLOAD library for SSID="ssid" is not available!"
say "Check z/OS LINKLIST or allocate to STEPLIB in advance!"
signal error
end
ADDRESS TSO "SUBCOM DSNREXX"
if rc <> 0
then do
cc = RXSUBCOM("ADD","DSNREXX","DSNREXX")
if cc
then do
say "DB2 SDSNLOAD library not available!"
say "Check z/OS LINKLIST or allocate to STEPLIB in advance!"
signal error
end
end
/*********************************************************************/
/* Set indicators and other initial values */
/*********************************************************************/
if mode = "" then ind_mode = -1; else ind_mode = 0;
if action = "" then ind_action = -1; else ind_action = 0;
if mgalias = "" then ind_mgalias = -1; else ind_mgalias = 0;
if tableset = "" then ind_tableset = -1; else ind_tableset = 0;
if authid = "" then ind_authid = -1; else ind_authid = 0;
if schema = "" then ind_schema = -1; else ind_schema = 0;
if schemaalias = "" then ind_schemaalias = -1; else ind_schemaalias = 0;
if dbname = "" then ind_dbname = -1; else ind_dbname = 0;
if stgdbname = "" then ind_stgdbname = -1; else ind_stgdbname = 0;
if stgixname = "" then ind_stgixname = -1; else ind_stgixname = 0;
if bp04name = "" then ind_bp04name = -1; else ind_bp04name = 0;
if bp08name = "" then ind_bp08name = -1; else ind_bp08name = 0;
if bp16name = "" then ind_bp16name = -1; else ind_bp16name = 0;
if bp32name = "" then ind_bp32name = -1; else ind_bp32name = 0;
if bpixname = "" then ind_bpixname = -1; else ind_bpixname = 0;
if bp04lob = "" then ind_bp04lob = -1; else ind_bp04lob = 0;
if bp08lob = "" then ind_bp08lob = -1; else ind_bp08lob = 0;
if bp16lob = "" then ind_bp16lob = -1; else ind_bp16lob = 0;
if bp32lob = "" then ind_bp32lob = -1; else ind_bp32lob = 0;
prc = 0; ind_prc = 0;
pmsg = COPIES(",",2048); ind_pmsg = 0;
resultset3 = 0; /* Result set 3 not returned */
/*********************************************************************/
/* Connect to DB2 subsystem and clear results */
/*********************************************************************/
ADDRESS DSNREXX "CONNECT" ssid
call Code 0
ADDRESS DSNREXX "EXECSQL DELETE FROM SYSIBM.EXPLAIN_MAINT_SUMMARY"
call Code 0
ADDRESS DSNREXX "EXECSQL DELETE FROM SYSIBM.EXPLAIN_MAINT_SQL"
call Code 0
ADDRESS DSNREXX "EXECSQL DELETE FROM SYSIBM.EXPLAIN_MAINT_TB_NOT_UPGRADED"
/*********************************************************************/
/* call DB2 stored procedure */
/*********************************************************************/
sqlstmt = "CALL SYSPROC.ADMIN_EXPLAIN_MAINT",
"(:mode:ind_mode, ",
" :action:ind_action, ",
" :mgalias:ind_mgalias, ",
" :tableset:ind_tableset, ",
" :authid:ind_authid, ",
" :schema:ind_schema, ",
" :schemaalias:ind_schemaalias, ",
" :dbname:ind_dbname, ",
" :stgdbname:ind_stgdbname, ",
" :stgixname:ind_stgixname, ",
" :bp04name:ind_bp04name, ",
" :bp08name:ind_bp08name, ",
" :bp16name:ind_bp16name, ",
" :bp32name:ind_bp32name, ",
" :bpixname:ind_bpixname, ",
" :bp04lob:ind_bp04lob, ",
" :bp08lob:ind_bp08lob, ",
" :bp16lob:ind_bp16lob, ",
" :bp32lob:ind_bp32lob, ",
" :prc:ind_prc, ",
" :pmsg:ind_pmsg)";
address DSNREXX "EXECSQL" sqlstmt
if prc > 8
then do
say copies("-",79)
say "ADMIN_EXPLAIN_MAINT terminated with severe errors:"
say "Return Code .......: "prc
say "Error Message .....: "pmsg
say copies("-",79)
signal error
end
if prc = 4
then do
say copies("-",79)
say "ADMIN_EXPLAIN_MAINT:"
say "One or more existing EXPLAIN tables are not in Unicode. The"
say "table formats are updated to the format for the current DB2"
say "version. However, the tables are not converted to Unicode."
end
if prc = 8
then do
say copies("-",79)
say "ADMIN_EXPLAIN_MAINT:"
say "The format of one or more existing EXPLAIN tables that were"
say "included in the table-set input parameter cannot be updated"
say "to the format for the current DB2 version because the"
say "existing format does not match any known format, or the"
say "tables cannot be altered."
end
call Code 0 466 /* +466 = more rows to fetch */
/*********************************************************************/
/* Continue only if result set returned (SQLCODE=+466) */
/*********************************************************************/
if sqlcode = 0
then do
say copies("-",79)
say "ADMIN_EXPLAIN_MAINT has not detected any discrepancy"
say "or missing EXPLAIN tables. No result has been returned."
say copies("-",79)
exit 0
end
/*********************************************************************/
/* Combine 3 locators with the stored procedure */
/*********************************************************************/
LOC1 = d2x(0)
LOC2 = d2x(0)
LOC3 = d2x(0)
sqlstmt = "ASSOCIATE LOCATORS (:LOC1, :LOC2 , :LOC3)",
"WITH PROCEDURE SYSPROC.ADMIN_EXPLAIN_MAINT"
address DSNREXX "EXECSQL" sqlstmt;
call code 0
/*********************************************************************/
/* Init variables used with locator/cursor c1 */
/*********************************************************************/
db_created = ""
ts_created = ""
tb_created = ""
aux_created = ""
ix_created = ""
alias_created = ""
tb_examined = ""
tb_altered = ""
ts_dropped = ""
tb_dropped = ""
tb_unexpected_format = ""
tb_not_standardized = ""
tb_not_unicode = ""
/*********************************************************************/
/* Allocate and process cursor-driven LOC1/C1 summary result set */
/*********************************************************************/
say ""
say "Summary of ADMIN_EXPLAIN_MAINT examinations:"
say "--------------------------------------------"
sqlstmt = "ALLOCATE C101 CURSOR FOR RESULT SET :LOC1"
address DSNREXX "EXECSQL" sqlstmt;
do while sqlcode = 0
call code 0
sqlstmt = "FETCH C101 INTO :db_created, :ts_created, ",
" :tb_created, :aux_created, ",
" :ix_created, :alias_created, ",
" :tb_examined, :tb_altered, ",
" :ts_dropped, :tb_dropped, ",
" :tb_unexpected_format, ",
" :tb_not_standardized, ",
" :tb_not_unicode";
Address DSNREXX "EXECSQL" sqlstmt;
if sqlcode = 0
then do
say "Created....: Database: "db_created" Tablespace: "ts_created
say " Table: "tb_created" IX: "ix_created,
"Alias: "alias_created
say "Examined...: Table: "tb_examined
say "Altered....: Table: "tb_altered
say "Dropped....: Tablespace: "ts_dropped" Table: "tb_dropped
say "Unexpected.: Table: "tb_unexpected_format
say "Not Stand..: Table: "tb_not_standardized
say "Not UNICODE: Table: "tb_not_unicode
end
end
call code 0 100
sqlstmt = "CLOSE C101"
address DSNREXX "EXECSQL "sqlstmt;
call code 0 100
/*********************************************************************/
/* Allocate and process cursor-driven LOC2/C102 statement result set */
/*********************************************************************/
sqlstmt = "ALLOCATE C102 CURSOR FOR RESULT SET :LOC2"
address DSNREXX "EXECSQL" sqlstmt;
if sqlcode = 0 /* result set 2 returned */
then do
say ""
say "Statements created by ADMIN_EXPLAIN_MAINT:"
say "------------------------------------------"
do while sqlcode = 0
call code 0
sqlstmt = "FETCH C102 INTO :rownum2, :sqlout";
Address DSNREXX "EXECSQL" sqlstmt;
if sqlcode = 0
then do
say "--- Row "rownum2
say sqlout
end
end
call code 0 100
sqlstmt = "CLOSE C102"
address DSNREXX "EXECSQL "sqlstmt;
call code 0 100
/****************************************************************/
/* Allocate and process cursor-driven LOC3/C103 proc. results */
/****************************************************************/
sqlstmt = "ALLOCATE C103 CURSOR FOR RESULT SET :LOC3"
address DSNREXX "EXECSQL" sqlstmt;
if sqlcode = 0 /* result set 3 returned */
then do
say ""
say "Exceptions while processing generated statements:"
say "-------------------------------------------------"
do while sqlcode = 0
call code 0
sqlstmt = "FETCH C103 INTO :rownum3, :schemaname, :tbname,",
" :reason";
Address DSNREXX "EXECSQL" sqlstmt;
say "--- Row "rownum3":",
say "Schema: "schemaname" Table:"tbname
say "Reason:"reason
end
call code 0 100
sqlstmt = "CLOSE C103"
address DSNREXX "EXECSQL "sqlstmt;
call code 0 100
end
end
else do
say ""
say "ADMIN_EXPLAIN_MAINT did not detect any discrepancies."
end
say "*** end ***"
/*********************************************************************/
/* Disconnect vom Subsystem */
/*********************************************************************/
Disconnect:
ADDRESS DSNREXX "DISCONNECT"
cc = RXSUBCOM("DELETE","DSNREXX","DSNREXX")
return
/*********************************************************************/
/* Error processing and termination */
/*********************************************************************/
SYNTAX:
say "XMPEXADM: Syntax error."
say " [TSO] XMPEXADM :"
say " SSID .......: DB2 Subsystem ID"
say " MODE .......: RUN|PREVIEW "
say " ACTION .....: STANDARDIZE|..._AND_CREATE|DROP|... "
say " STANDARDIZE Upgrade all existing EXPLAIN tables "
say " to the format for the current DB2 version. "
say " STANDARDIZE_AND_CREATE Upgrade all existing "
say " EXPLAIN tables to the format for the current "
say " DB2 version, and create any missing tables of"
say " those that are specified by the table-set"
say " input parameter. "
say " CREATE Create a new set of EXPLAIN tables in "
say " the specified schema. Only tables that are "
say " specified by the table-set input parameter"
say " are created."
say " CREATE_ALIAS Create a new set of aliases only."
say " The new aliases are qualified by the value"
say " that is specified for the schema-alias"
say " input parameter."
say " DROP Drop all exisiting EXPLAIN tables and the"
say " associated table space."
say " DROP_AND_CREATE Drop all existing EXPLAIN"
say " tables, and the associated table space, and"
say " create a replacement set of the tables that"
say " are specified by the table-set input "
say " parameter."
say " MGALIAS ....: manage aliases YES|NO "
say " TABLESET ...: ALL|ACCEL|DIANGOSTICS|ALL_ACCEPT() "
say " AUTHID .....: (must) authorization ID (CURRENT SQLID)"
say " SCHEMA .....: (must) schema|qaulifier (CURRENT (SQLID)"
say " SCHEMAALIAS : schema name for aliases"
say " DBNAME .....: database "
say " STGDBNAME ..: storage group tablespaces "
say " STGIXNAME ..: storage group indexespaces "
say " BP04NAME ...: BP 4K pages to be used "
say " BP08NAME ...: BP 8K pages to be used "
say " BP16NAME ...: BP 16K pages to be used "
say " BP32NAME ...: BP 32K pages to be used "
say " BPIXNAME ...: BP for IX pages to be used "
say " BP04LOB ....: BP 4K pages to be used for LOB's"
say " BP08LOB ....: BP 8K pages to be used for LOB's "
say " BP16LOB ....: BP 16K pages to be used for LOB's "
say " BP32LOB ....: BP 32K pages to be used for LOB's "
say "Example:"
say "TSO XMPEXADM DB2P,PREVIEW,STANDARDIZE_AND_CREATE,,ALL,USER1,USER1"
say "TSO XMPEXADM DB2P,RUN,CREATE,,ALL,ADMUSER1,USER3,DBUSER3"
ERROR:
say ""
If Sysvar(SYSISPF) = "NOT ACTIVE"
then do
say "REXX procedure XMPEXADM ends with U0001."
address ATTACH "XMPABND"
exit 0
end
say "REXX procedure XMPEXADM ends with RC=20."
exit 20
/*********************************************************************/
/* Check SQLCODE's allowed */
/*********************************************************************/
Code:
arg codes
allowed = "NO"
do ci=1 to words(codes)
if sqlcode = word(codes,ci)
then allowed = "YES"
end
if allowed = "NO"
then do
say "CONNECT: SQL Error with SQLCODE="sqlcode
call TIAR sqlcode
say " "sqlstmt
call Disconnect
signal error
end
return
/*********************************************************************/
/* process line output, hide if value contains no information */
/*********************************************************************/
Line: parse arg lval ltext
lval = trunc(lval)
if lval > 0
then say right(lval,20)" "ltext
return
/*********************************************************************/
/* Retrieve some internal information from z/OS control blocks */
/*********************************************************************/
GET_JOBNAME: Procedure
/* all fields are part of general use prog'ing interface */
PSATOLD = '21C'X
TCB = C2D(STORAGE(C2X(PSATOLD),4))
TIOT = C2D(STORAGE(D2X(TCB+12),4))
TIOCNJOB = STRIP(STORAGE(D2X(TIOT),8))
TIOCSTEP = STRIP(STORAGE(D2X(TIOT+8),8))
Return TIOCNJOB TIOCSTEP
/*********************************************************************/
/* Display SQL Commmunication area using DSNTIAR */
/*********************************************************************/
TIAR: arg sqlcode
sqlc = d2x(sqlcode,8)
sqlc = x2c(sqlc)
sqlca = 'sqlca '
sqlca = sqlca !! x2c(00000088)
sqlca = sqlca !! sqlc
sqlca = sqlca !! x2c(0000)
sqlca = sqlca !! copies(' ',78)
sqlca = sqlca !! copies(x2c(00),24)
sqlca = sqlca !! copies(' ',16)
tiar_msg = x2c(0190)copies(' ',400)
text_len = x2c(00000050) ;
/***************************************************************/
/* Extract Message from Return Area */
/***************************************************************/
ADDRESS ATTCHPGM 'DSNTIAR SQLCA TIAR_MSG TEXT_LEN'
say substr(tiar_msg,4,400);
/***************************************************************/
/* Extract Message from Return Area */
/***************************************************************/
len = c2d(substr(rtrnarea,5,2))
/***************************************************************/
/* Extract Message from Return Area */
/***************************************************************/
say " SQLCODE="sqlcode
say " SQLERRMC="sqlerrmc
say " SQLWARN5="sqlwarn.5
say " SQLERRP ="sqlerrp
say " SQLSTATE="sqlstate
return
IBM DB2 Dokumentation zur Stored Procedure ADMIN_EXPLAIN_MAINT gibt’s hier!







Comments
Comments are closed.