{ ************************************************************************* } { } { INFORMIX SOFTWARE, INC. } { } { Title: sysmaster.sql } { Sccsid: @(#)sysmaster.sql 9.35 12/3/93 18:06:28 } { Description: } { create sysmaster database and SMI tables } { } { NOTE: Ensure that any changes in the schema of the "sysmaster" database } { OR changes in the corresponding shared memory structure defns } { are reflected *appropriately* in ALL the files below: } { rsam/sysmaster.sql.IUS, } { rsam/sysmaster.sql.ODS, } { rsam/rsmem.h, } { rsam/rspseudo.h and } { rsam/rspseudo.c } { } { ************************************************************************* } { Create Pseudo Tables } SET LOCK MODE TO WAIT; CREATE DATABASE sysmaster WITH LOG; DATABASE sysmaster EXCLUSIVE; { databases } CREATE TABLE sysdbspartn ( partnum INTEGER, { table id for systables } created INTEGER, { date created } owner CHAR(32), { user name of creator } name CHAR(128), { database name } flags SMALLINT { flags indicating logging } ); CREATE UNIQUE INDEX sysdbs_nameix ON sysdbspartn(name); REVOKE ALL ON sysdbspartn FROM PUBLIC; GRANT SELECT ON sysdbspartn TO PUBLIC; { join for partnums to table names } CREATE TABLE systabnames ( partnum INTEGER, { table id for table } dbsname CHAR(128), { database name } owner CHAR(32), { table owner } tabname CHAR(128), { table name } collate CHAR(32) { collation assoc with database } ); CREATE UNIQUE INDEX systabs_pnix ON systabnames(partnum); REVOKE ALL ON systabnames FROM PUBLIC; GRANT SELECT ON systabnames TO PUBLIC; { Raw Disk } CREATE TABLE sysrawdsk { Internal Use Only } ( pagenum INTEGER, { physical page address } offset SMALLINT, { bytes into page } loc CHAR(14), { location representation } hexdata CHAR(40), { 16 bytes hexdumped from offset} ascdata CHAR(16) { 16 bytes ascii-dumped } ); CREATE UNIQUE INDEX sysrawdskidx ON sysrawdsk (pagenum, offset); REVOKE ALL ON sysrawdsk FROM PUBLIC; { Page Headers } CREATE TABLE syspaghdr ( pg_partnum INTEGER, { partition number of page } pg_pagenum INTEGER, { logical page number in partn } pg_physaddr INTEGER, { pg_addr } pg_stamp INTEGER, { pg_stamp } pg_stamp2 INTEGER, { pg_stamp2 } pg_nslots SMALLINT, { pg_nslots } pg_flags SMALLINT, { pg_flags } pg_frptr SMALLINT, { pg_frptr } pg_frcnt SMALLINT, { pg_frcnt } pg_next INTEGER, { pg_pgnext } pg_prev INTEGER { pg_pgprev } ); CREATE UNIQUE INDEX syspaghdridx ON syspaghdr (pg_partnum, pg_pagenum); REVOKE ALL ON syspaghdr FROM PUBLIC; GRANT SELECT ON syspaghdr TO PUBLIC; { Slot Tables } CREATE TABLE sysslttab { Internal Use Only } ( partnum INTEGER, { partition number of page } pagenum INTEGER, { logical page number in partn } slotnum SMALLINT, { slot number on page } slotptr SMALLINT, { slot pointer } slotlen SMALLINT, { slot length } slotflg SMALLINT { slot flag } ); CREATE UNIQUE INDEX sysslttabidx ON sysslttab (partnum, pagenum, slotnum); REVOKE ALL ON sysslttab FROM PUBLIC; GRANT SELECT ON sysslttab TO PUBLIC; { Slot Data } CREATE TABLE syssltdat { Internal Use Only } ( partnum INTEGER, { partition number of page } pagenum INTEGER, { logical page number in partn } slotnum SMALLINT, { slot number on page } slotoff SMALLINT, { slot offset } loc CHAR(20), { location representation } hexdata CHAR(40), { 16 bytes hexdumped from offset} ascdata CHAR(16) { 16 bytes ascii dumped } ); CREATE UNIQUE INDEX syssltdatidx ON syssltdat (partnum, pagenum, slotnum, slotoff); REVOKE ALL ON syssltdat FROM PUBLIC; { Chunk Free List } CREATE TABLE syschfree ( chknum INTEGER, { chunk number } extnum INTEGER, { extent number in chunk } start INTEGER, { physical addr of start } leng INTEGER { length of extent } ); CREATE UNIQUE INDEX syschfreeidx ON syschfree (chknum, extnum); REVOKE ALL ON syschfree FROM PUBLIC; GRANT SELECT ON syschfree TO PUBLIC; { Partition Headers } CREATE TABLE sysptnhdr ( partnum INTEGER, { table's partnum } flags INTEGER, { partition flags } rowsize INTEGER, { rowsize (max for variable) } ncols SMALLINT, { number of varchar or blob columns } nkeys SMALLINT, { number of indexes } nextns SMALLINT, { number of extents } created INTEGER, { date created } serialv INTEGER, { current serial value } fextsiz INTEGER, { first extent size ( in pages ) } nextsiz INTEGER, { next extent size ( in pages ) } nptotal INTEGER, { number of pages allocated } npused INTEGER, { number of pages used } npdata INTEGER, { number of data pages } octptnm INTEGER, { OCT partnum (optical blobs only) } lockid INTEGER, { table lock id } nrows INTEGER { number of data rows } ); CREATE UNIQUE INDEX sysptnhdridx ON sysptnhdr (partnum); REVOKE ALL ON sysptnhdr FROM PUBLIC; GRANT SELECT ON sysptnhdr TO PUBLIC; { Partition Key Descriptions } CREATE TABLE sysptnkey { Internal Use Only } ( partnum INTEGER, { partnum for partition } keynum SMALLINT, { keynumber for key } flags SMALLINT, { key flags } rootnode INTEGER, { logical pagenum for root node } nparts SMALLINT, { number of parts in key } keylen SMALLINT, { key length } kpartno SMALLINT, { partno for this part } kpstart SMALLINT, { offset into row of the part } kpleng SMALLINT, { length of this part } kptype SMALLINT { type of this part } ); CREATE UNIQUE INDEX sysptnkeyidx ON sysptnkey (partnum, keynum, kpartno); REVOKE ALL ON sysptnkey FROM PUBLIC; GRANT SELECT ON sysptnkey TO PUBLIC; { Partition Extent Descriptions } CREATE TABLE sysptnext { Internal Use Only } ( pe_partnum INTEGER, { partnum for this partition } pe_extnum SMALLINT, { extent number } pe_phys INTEGER, { physical addr for this extent } pe_size INTEGER, { size of this extent } pe_log INTEGER { logical page for start } ); CREATE UNIQUE INDEX sysptnextidx ON sysptnext (pe_partnum, pe_extnum); REVOKE ALL ON sysptnext FROM PUBLIC; GRANT SELECT ON sysptnext TO PUBLIC; { Partition Column Descriptions } CREATE TABLE sysptncol { Internal Use Only } ( partnum INTEGER, { partnum for this partition } colnum SMALLINT, { column number } coloff SMALLINT, { offset into row } colblob SMALLINT, { blobspace num if blob } colsize SMALLINT, { column size } colflags SMALLINT, { flags for column } coltype SMALLINT { data type of column } ); CREATE UNIQUE INDEX sysptncolidx ON sysptncol (partnum, colnum); REVOKE ALL ON sysptncol FROM PUBLIC; GRANT SELECT ON sysptncol TO PUBLIC; { Partition Bit Maps } CREATE TABLE sysptnbit ( pb_partnum INTEGER, { partnum for this partition } pb_pagenum INTEGER, { logical pagenum represented } pb_bitmap INTEGER { bitmap value for page } ); CREATE UNIQUE INDEX sysptnbitidx ON sysptnbit (pb_partnum, pb_pagenum); REVOKE ALL ON sysptnbit FROM PUBLIC; GRANT SELECT ON sysptnbit TO PUBLIC; { rsam thread control blocks } CREATE TABLE sysrstcb { Internal Use Only } ( indx INTEGER, { index into rstcb table (rs_number) } address INTEGER, { addr of rstcb structure } txp INTEGER, { addr of txp } localtxp INTEGER, { addr of local txp (XA only) } tmptxp INTEGER, { addr of temp file txp } savetxp INTEGER, next INTEGER, { addr of next on active or free list } tmpdepth INTEGER, { depth of temp file ops } rmid INTEGER, { XA Resource Manager ID } xrecvrpos SMALLINT, iserrno INTEGER, { rsam errno number } isrecnum INTEGER, { current rowid } isfragnum INTEGER, { current fragment number } flags INTEGER, { flags for rstcb } uid SMALLINT, { user id } asyncerr INTEGER, { address of async error } username CHAR(32), { user name } timeout SMALLINT, { lock timeout counter } nxtthread INTEGER, { addr of next if >1 threads } sid INTEGER, { session id } scb INTEGER, { addr of scb } ostcb INTEGER, { addr of ostcb } gentcb INTEGER, { addr of gentcb } tid INTEGER, { thread id } join SMALLINT, { thread will join others } mttcb INTEGER, { addr of mt thread cb } aio INTEGER, { addr of aio request struct } mirror_aio INTEGER, { addr of mirror req struct } lkwait INTEGER, { waiting for this lock } lkwttype INTEGER, { lock type waiting for } bfwait INTEGER, { waiting for this buffer } bfwtflag SMALLINT, { buffer wait type flag } txwait INTEGER, { waiting for this transaction } txsusp INTEGER, { suspended transaction } wtlist INTEGER, { addr of next waiter on lock } wtthrlist INTEGER, { addr of next thread in trans } bflist INTEGER, { addr of next waiter on buff } txlist INTEGER, { addr of next waiter on tx } lbufwake INTEGER, { addr of log buffer for wake up} nreads INTEGER, { number of reads } nwrites INTEGER, { number of writes } tolist INTEGER, { addr of next in timeout list } nopens INTEGER, { size of open table } nfiles INTEGER, { size of file table } opentab INTEGER, { open table } opfree INTEGER, nextopen INTEGER, filetab INTEGER, { file table } hfiles INTEGER, flfree INTEGER, nextfile INTEGER, tmprow INTEGER, { temp space for row } tmpsize INTEGER, { size of tmprow space } cmprow INTEGER, { temp space for compressed row } rcmprow INTEGER, { temp space for reading cmprow } rowupdatep INTEGER, { address of row update info ** } isbisfd INTEGER, { isfd for isb* routines } blobptr INTEGER, { ptr to current open blob } blobrarea INTEGER, { blobpage buffer read area } blobrszbuf INTEGER, { size of blob buffer read area } blobrbufp INTEGER, { addr of blob buffer read } blobwarea INTEGER, { blobpage buffer write area } blobwszbuf INTEGER, { size of blob buffer write area} blobwbufp INTEGER, { addr of blob buffer write } blobcarea INTEGER, { blobpage buffer copy area } blobcszbuf INTEGER, { size of blob buffer copy area } blobcbufp INTEGER, { addr of blob buffer copy } blobpiecesp INTEGER, { addr of blobpieces struct ** } affp INTEGER, afid INTEGER, afcnt SMALLINT, operrno INTEGER, { error in optical subsystem } dolinkchk INTEGER, { do link checks in btchknode } nnode INTEGER, { next node for link check } pnode INTEGER, { prev node for link check } rsamdebug INTEGER, { do rsam debugging checks } lastlock INTEGER, { last lock granted } bufferlogging INTEGER, { do buffered logging } abcpytab INTEGER, { auxiliary bcpy table } abcpytabmult INTEGER, { size multiple for aux bcpy tab} logbuff INTEGER, { normal log buffer } logbuff_beg INTEGER, undologbuff INTEGER, { undo log buffer } tmplogrec INTEGER, btp INTEGER, { addr of current bt struct ** } rkeysfree INTEGER, turbonum INTEGER, lastrsfd INTEGER, { longest rsfd open } svptnum INTEGER, { savepoint number } numsorts INTEGER, { number of open sorts allowed } srttab INTEGER, { addr of sort table } srttmpdir INTEGER, { ptr to sort temp dir pathname } srtfileid INTEGER, { file id for sort file } privdata INTEGER, { generic pointer to private mem} precnum INTEGER, rootaddr INTEGER, { root node of idx being built } relocking INTEGER, { relock on recovery } pitstop INTEGER, pitaction INTEGER, debugerrno INTEGER, bfheld_count INTEGER, logbu INTEGER, arcbu INTEGER, physrecvr INTEGER, logrecvr INTEGER, recvryflag INTEGER, nlogs INTEGER, logs INTEGER, auditp INTEGER, nexttrace INTEGER, ntraces INTEGER, traces INTEGER, trflags INTEGER, opsubbuf INTEGER, opbuf INTEGER, opbufsize INTEGER, blobtxtabp INTEGER, nblobtxs INTEGER, maxnbtxs INTEGER, onut_bufflist INTEGER, onut_cb INTEGER, upf_rqlock INTEGER, { number of locks requested } upf_wtlock INTEGER, { ... lock waits } upf_deadlk INTEGER, { ... deadlocks detected } upf_lktouts INTEGER, { ... lock timeouts } upf_lgrecs INTEGER, { ... log records written } upf_isread INTEGER, { ... reads } upf_iswrite INTEGER, { ... writes } upf_isrwrite INTEGER, { ... rewrites } upf_isdelete INTEGER, { ... deletes } upf_iscommit INTEGER, { ... commits } upf_isrollback INTEGER, { ... rollbacks } upf_longtxs INTEGER, { ... long transactions } upf_bufreads INTEGER, { ... buffer reads } upf_bufwrites INTEGER, { ... buffer writes } upf_logspuse INTEGER, { % log space currently used } upf_logspmax INTEGER, { max % of logspace ever used } upf_seqscans INTEGER, { number of sequential scans } upf_totsorts INTEGER, upf_dsksorts INTEGER, upf_srtspmax INTEGER, nlocks INTEGER, { number of locks currently held} lktout SMALLINT, { lock timeout counter } lkthreadlist INTEGER { next thread in same tx wtg } ); CREATE UNIQUE INDEX sysrstcbidx ON sysrstcb (indx); CREATE UNIQUE INDEX sysrstcbaddr ON sysrstcb (address); REVOKE ALL ON sysrstcb FROM PUBLIC; GRANT SELECT ON sysrstcb TO PUBLIC; { Transactions } CREATE TABLE systxptab { Internal Use Only } ( indx INTEGER, { index into transaction table } address INTEGER, { address of transaction struct } latchp INTEGER, { address of transaction latch } next INTEGER, { addr of next on active or free list } gtridp INTEGER, { address of gtrid } txid INTEGER, { id of transaction } flags INTEGER, { transaction flags } logbeg INTEGER, { loguniq containing BEGIN } loguniq INTEGER, { loguniq of last record } logpos INTEGER, { logpos of last record } dlklist INTEGER, { used for deadlk detection } deadflag SMALLINT, { flag for deadlock detection } mgmquery INTEGER, { tx_query } lkwaitcnt SMALLINT, { # of threads waiting on locks } lklist INTEGER, { list of locks held } lklatchp INTEGER, { addr of private lock latch ** } owner INTEGER, { addr of owner (rstcb_t *) } wtlist INTEGER, { users waiting for this tx } ptlist INTEGER, { list of partitions dropped } nlocks INTEGER, { number of locks held } lkwait SMALLINT, { lock wait timeout } splevel SMALLINT, { savepoint level } isolevel SMALLINT, { isolation level } locktablep INTEGER, { addr of table locks table ** } svptcnt INTEGER, { number of savepoints alloc'ed } svuniqp INTEGER, { addr of savepoint loguniqs ** } svposp INTEGER, { addr of savepoint logpos's ** } longtx SMALLINT, { this is long transaction } nsusp SMALLINT, { number of suspends for tx } stamp INTEGER, { activity time stamp } istar_coord CHAR(128), { istar coordinator } sblock INTEGER, { ptr to dynamic shm block } sqlptr INTEGER, { ptr to first ismalloc piece } nremotes SMALLINT, { # of rem thread activations } begstamp INTEGER { stamp at time of BEGIN WORK } ); CREATE UNIQUE INDEX systxpidx ON systxptab (indx); CREATE UNIQUE INDEX systxpaddr ON systxptab (address); REVOKE ALL ON systxptab FROM PUBLIC; GRANT SELECT ON systxptab TO PUBLIC; { Locks } CREATE TABLE syslcktab { Internal Use Only } ( indx INTEGER, { index into lock table } address INTEGER, { addr of lock structure } hash INTEGER, { addr of next in hash bucket } same INTEGER, { list of same locks } wtlist INTEGER, { list of waiters (rstcb *) } owner INTEGER, { owner of lock (rtx *) } list INTEGER, { list of owner's locks } type SMALLINT, { type of lock } flags SMALLINT, { lock flags } bsize SMALLINT, { size of bytes key } keynum SMALLINT, { keynum of item lock } rowidr INTEGER, { real rowid if key lock } partnum INTEGER, { partnum lock is on } rowidn INTEGER, { key value locked } dipnum INTEGER, { pagenum if deleted item } grtime INTEGER { time lock was granted } ); CREATE UNIQUE INDEX syslckidx ON syslcktab (indx); CREATE UNIQUE INDEX syslckaddr ON syslcktab (address); REVOKE ALL ON syslcktab FROM PUBLIC; GRANT SELECT ON syslcktab TO PUBLIC; { Buffer Headers } CREATE TABLE sysbufhdr { Internal Use Only } ( indx INTEGER, { index into buffer table } address INTEGER, { address of buffer structure } latchp INTEGER, { ptr to buffer latch } bhforw INTEGER, { forward pointer in hash list } bhback INTEGER, { backward pointer in hash list } blforw INTEGER, { forward pointer in lru list } blback INTEGER, { backward pointer in lru list } bflags SMALLINT, { buffer flags } berror SMALLINT, { i/o error } reusecnt SMALLINT, { how often buff is reused } lrunum SMALLINT, { last lru this buff was on } pagenum INTEGER, { physical page addr on disk } pagemem INTEGER, { ptr to page in shared memory } owner INTEGER, { owner with lock (rstcb *) } wtlist INTEGER, { list of waiters for buff lock } sharecnt SMALLINT, { count of users sharing buff } xflags SMALLINT { type of lock on buffer } ); CREATE UNIQUE INDEX sysbufhdridx ON sysbufhdr (indx); CREATE UNIQUE INDEX sysbufhdraddr ON sysbufhdr (address); REVOKE ALL ON sysbufhdr FROM PUBLIC; GRANT SELECT ON sysbufhdr TO PUBLIC; { Dbspace Table } CREATE TABLE sysdbstab { Internal Use Only } ( address INTEGER, { address of dbspace structure } dbsnum INTEGER, { dbspace number } flags INTEGER, { dbspace flags } fchunk INTEGER, { first chunk in dbspace } nchunks INTEGER, { number of chunks in dbspace } created INTEGER, { date created } prtpage INTEGER, { partition partition starts at } partp INTEGER, { ptr to partp in partition tab } bpagesize INTEGER, { BLOB page size } bcolcnt INTEGER, { number of blob columns ref } level0 INTEGER, { time of last level 0 archive } stamp0 INTEGER, { timestamp last level 0 archive} logid0 INTEGER, { logid for last level 0 archive} logpos0 INTEGER, { log pos last level 0 archive } level1 INTEGER, { time of last level 1 archive } stamp1 INTEGER, { timestamp last level 1 archive} logid1 INTEGER, { logid for last level 1 archive} logpos1 INTEGER, { log pos last level 1 archive } level2 INTEGER, { time of last level 2 archive } stamp2 INTEGER, { timestamp last level 2 archive} logid2 INTEGER, { logid for last level 2 archive} logpos2 INTEGER, { log pos last level 2 archive } logid INTEGER, { log id (for logical restore) } logpos INTEGER, { log pos (for logical restore) } oldlogid INTEGER, { oldest log id (for log resto) } lastlogid INTEGER, { last log id (for log resto) } rest_time INTEGER, { time of last physical restore } arc_pit INTEGER, { PIT to terminate log replay } name CHAR(128), { dbspace name } owner CHAR(32) { dbspace owner } ); CREATE UNIQUE INDEX sysdbstab_dbsnum ON sysdbstab (dbsnum); REVOKE ALL ON sysdbstab FROM PUBLIC; GRANT SELECT ON sysdbstab TO PUBLIC; { Chunk Table } CREATE TABLE syschktab { Internal Use Only } ( address INTEGER, { address of chunk structure } chknum SMALLINT, { chunk number } nxchunk SMALLINT, { number of next chunk in dbsp } offset INTEGER, { pages offset into device } chksize INTEGER, { pages in chunk } nfree INTEGER, { free pages in chunk } mdsize INTEGER, { metadata pages in chunk } udsize INTEGER, { user data pages in chunk } udfree INTEGER, { free user data pages in chunk } dbsnum SMALLINT, { dbspace number } overhead SMALLINT, { blob freemap overhead } flags SMALLINT, { chunk flags } namlen SMALLINT, { length of device pathname } fname CHAR(256), { device pathname } reads INTEGER, { number of read ops } writes INTEGER, { number of write ops } pagesread INTEGER, { number of pages read } pageswritten INTEGER, { number of pages written } readtime FLOAT, { time spent reading (usecs) } writetime FLOAT { time spent writing (usecs) } ); CREATE UNIQUE INDEX syschktab_chknum ON syschktab (chknum); REVOKE ALL ON syschktab FROM PUBLIC; GRANT SELECT ON syschktab TO PUBLIC; { Mirror Chunk Table } CREATE TABLE sysmchktab { Internal Use Only } ( address INTEGER, { address of chunk structure } chknum SMALLINT, { chunk number } nxchunk SMALLINT, { number of next chunk in dbsp } offset INTEGER, { pages offset into device } chksize INTEGER, { pages in chunk } nfree INTEGER, { free pages in chunk } mdsize INTEGER, { metadata pages in chunk } udsize INTEGER, { user data pages in chunk } udfree INTEGER, { free user data pages in chunk } dbsnum SMALLINT, { dbspace number } overhead SMALLINT, { blob freemap overhead } flags SMALLINT, { chunk flags } namlen SMALLINT, { length of device pathname } fname CHAR(256), { device pathname } reads INTEGER, { number of read ops } writes INTEGER, { number of write ops } pagesread INTEGER, { number of pages read } pageswritten INTEGER, { number of pages written } readtime FLOAT, { time spent reading (usecs) } writetime FLOAT { time spent writing (usecs) } ); CREATE UNIQUE INDEX sysmchktab_chknum ON sysmchktab (chknum); REVOKE ALL ON sysmchktab FROM PUBLIC; GRANT SELECT ON sysmchktab TO PUBLIC; { Log file info } CREATE TABLE syslogfil { Internal Use Only } ( indx INTEGER, { index into log table } address INTEGER, { address of logfile structure } number SMALLINT, { logfile number } flags SMALLINT, { logfile flags } fillstamp INTEGER, { stamp when last filled } filltime INTEGER, { time when last filled } uniqid INTEGER, { logfile uniqid } physloc INTEGER, { physical address of start } size INTEGER, { pages in logfile } used INTEGER { pages used in logfile } ); CREATE UNIQUE INDEX syslogfilidx ON syslogfil (indx); CREATE UNIQUE INDEX syslogfiladdr ON syslogfil (address); REVOKE ALL ON syslogfil FROM PUBLIC; GRANT SELECT ON syslogfil TO PUBLIC; { Btclean Request info } CREATE TABLE sysbtcreq { Internal Use Only } ( indx INTEGER, { index into btcreq table } address INTEGER, { address of btclean structure } hash INTEGER, { next in hash list } next INTEGER, { next in busy/free list } partnum INTEGER, { partnum of request } pagenum INTEGER, { pagenum of request } keynum SMALLINT, { keynum of request } putcnt SMALLINT { count of puts for this req } ); CREATE UNIQUE INDEX sysbtcreqidx ON sysbtcreq (indx); REVOKE ALL ON sysbtcreq FROM PUBLIC; GRANT SELECT ON sysbtcreq TO PUBLIC; { Trace buffer } CREATE TABLE systraces { Internal Use Only } ( type CHAR(8), { event type } file CHAR(14), { source file trace is from } lineno INTEGER, { line # in source file } stamp INTEGER, { stamp when traced } time INTEGER, { time when traced } userp INTEGER, { user who traced (rstcb *) } trans INTEGER, { tx who traced (rtx *) } data1 INTEGER, { data value 1 } data2 INTEGER, { data value 2 } data3 INTEGER, { data value 3 } data4 INTEGER, { data value 4 } data5 INTEGER { data value 5 } ); CREATE INDEX systrac_stampidx ON systraces (stamp); REVOKE ALL ON systraces FROM PUBLIC; GRANT SELECT ON systraces TO PUBLIC; { Open Partition Table } CREATE TABLE sysptntab { Internal Use Only } ( address INTEGER, { address of partition structure} condp INTEGER, { ptr to condition struct } latchp INTEGER, { ptr to latch struct ** } flags SMALLINT, { partition flags } ucount SMALLINT, { usage count } partnum INTEGER, { partition number } tablock INTEGER, { table lock id } physaddr INTEGER, { physical addr of partition pg } lastrowszp INTEGER, { size of last alloc'ed row } lastrowpnp INTEGER, { last page alloc'ed for row } lastidxpn INTEGER, { last page alloc'ed for index } extnsp INTEGER, { extent list address } badkeys INTEGER, { badkey bitmap } ptlist INTEGER, { next in list of dropped tables } altstmp INTEGER, { time stamp of last alter } ocount SMALLINT, { open count } skstamp INTEGER, { stamp of last table update } glscollname CHAR(32), { GLS collation name } localep INTEGER, { locale pointer } pf_rqlock INTEGER, { lock requests } pf_wtlock INTEGER, { lock waits } pf_deadlk INTEGER, { deadlocks } pf_lktouts INTEGER, { lock timeouts } pf_dskreads INTEGER, { disk reads } pf_isread INTEGER, { reads } pf_dskwrites INTEGER, { disk writes } pf_iswrite INTEGER, { writes } pf_isrwrite INTEGER, { rewrites } pf_isdelete INTEGER, { deletes } pf_bfcread INTEGER, { buffer reads } pf_bfcwrite INTEGER, { buffer writes } pf_seqscans INTEGER { sequential scans } ); CREATE UNIQUE INDEX sysptntab_pnix ON sysptntab (partnum); REVOKE ALL ON sysptntab FROM PUBLIC; GRANT SELECT ON sysptntab TO PUBLIC; { Shared Memory } CREATE TABLE sysshmem { Internal Use Only } ( address INTEGER, { address in shmem to dump } loc CHAR(10), { location representation } hexdata CHAR(40), { 16 bytes hexdumped from addr } ascdata CHAR(16) { 16 bytes ascii-dumped } ); CREATE UNIQUE INDEX sysshmemidx ON sysshmem (address); REVOKE ALL ON sysshmem FROM PUBLIC; { Shared Memory Header } CREATE TABLE sysshmhdr { Internal Use Only } ( number INTEGER, { unique identifier for element } name CHAR(16), { name of rhead_t element } value INTEGER { value of rhead_t element } ); CREATE UNIQUE INDEX sysshmhdr_numix ON sysshmhdr(number); REVOKE ALL ON sysshmhdr FROM PUBLIC; GRANT SELECT ON sysshmhdr TO PUBLIC; { Configuartion parameters } CREATE TABLE syscfgtab ( cf_id INTEGER, { unique numeric identifier } cf_name CHAR(128), { config parameter name } cf_flags INTEGER, { flags } cf_original CHAR(256), { value in ONCONFIG at boottime } cf_effective CHAR(256), { value effectively in use } cf_default CHAR(256) { value by default } ); CREATE UNIQUE INDEX syscfgtabix1 ON syscfgtab(cf_id); REVOKE ALL ON syscfgtab FROM PUBLIC; GRANT SELECT ON syscfgtab TO PUBLIC; { Session control blocks } CREATE TABLE sysscblst { Internal Use Only } ( sid INTEGER, { session id } address INTEGER, { address of session structure } currheap INTEGER, { ptr to memory heap } poolp INTEGER, { ptr to private session pool } breakflag INTEGER, { stop current processing } urgent INTEGER, { message from tbmode } killflag INTEGER, { stop all processing } neterrno INTEGER, { network error number } flags INTEGER, { session flags } local SMALLINT, { user is local if set } tlatchp INTEGER, { latch protecting thread list } threadlist INTEGER, { ptr to first thread in list } next INTEGER, { next session in list } uid SMALLINT, { user id } username CHAR(32), { user name } gid SMALLINT, { primary group id } nsuppgids INTEGER, { number of supplementary gids } suppgidsp INTEGER, { ptr to suppl'ry gids table } clienttype INTEGER, { client type } pid INTEGER, { process id of fe program } progname CHAR(16), { fe program name } ttyin CHAR(16), { tty name for users stdin } ttyout CHAR(16), { tty name for users stdout } ttyerr CHAR(16), { tty name for users stderr } cwd CHAR(32), { users cwd } hostname CHAR(16), { users host name } connected INTEGER, { time that user connected } argc INTEGER, { count of args sent } argvp INTEGER, { ptr to arg table } envvarp INTEGER, { ptr to env var table } numenvvars INTEGER, { number of env vars } sizeenvtab INTEGER, { size of env var table } sqscb INTEGER, { ptr to sql control block } netscb INTEGER, { ptr to net control block } class INTEGER { VP class } ); CREATE UNIQUE INDEX sysscblst_sidix ON sysscblst(sid DESC); REVOKE ALL ON sysscblst FROM PUBLIC; GRANT SELECT ON sysscblst TO PUBLIC; { Thread control blocks } CREATE TABLE systcblst { Internal Use Only } ( tid INTEGER, { thread id } address INTEGER, { address of thread structure } stackp INTEGER, { ptr to threads stack } tnext INTEGER, { next thread in global list } tprev INTEGER, { prev thread in global list } lock INTEGER, { thread struct protection } next INTEGER, { next thread in special list } prev INTEGER, { prev thread in special list } joinlist INTEGER, { head of joined threads list } joinnext INTEGER, { next in joined threads list } joinee INTEGER, { thread this thread joined } joinresult INTEGER, { result of join } initialroutine INTEGER, { initial thread procedure } initialarg INTEGER, { initial arg } name CHAR(12), { thread name } self INTEGER, { this thread's address } state INTEGER, { thread state } flags INTEGER, { flags } wait_time INTEGER, { wait time accumulator } detach INTEGER, { thread detach mode } priority INTEGER, { thread priority } class INTEGER, { user defined thread class } vpid INTEGER, { vpid where thread is running } bind_vp INTEGER, { vp on which thread must run } bind_priv INTEGER, { thread has been bound } private_data INTEGER, { ptr to private data } wtmutexp INTEGER, { ptr to mutex waiting on } wtcondp INTEGER, { ptr to condition waiting on } sleep_time INTEGER, { seconds slept + start time } start_wait INTEGER, { sleep start time } pcount INTEGER, { number of valid p elements } padrp INTEGER, { ptr to padr table } pvalp INTEGER, { ptr to pval table } run_time INTEGER, { total time thread has run } wakeup_count INTEGER, { number of stacked wakeups } tstatp INTEGER, { ptr to thread TSTAT_T struct } wstatp INTEGER { ptr to thread WSTAT_T struct } ); CREATE UNIQUE INDEX systcblst_tidix ON systcblst(tid); REVOKE ALL ON systcblst FROM PUBLIC; GRANT SELECT ON systcblst TO PUBLIC; { VP info } CREATE TABLE sysvplst { Internal Use Only } ( vpid INTEGER, { VP id } address INTEGER, { address of VP struct } pid INTEGER, { unix process id } usecs_user FLOAT, { number of usecs of user time } usecs_sys FLOAT, { number of usecs of system time} scputimep INTEGER, { ptr to saved cputime (tms) } rcputimep INTEGER, { ptr to reset cputime (tms) } class INTEGER, { class of VP } readyqueue INTEGER, { ptr to ready queue tab (TCB_Q)} num_ready INTEGER, { number of ready threads } flags INTEGER, { VP flags } next INTEGER, { next in idle list } prev INTEGER, { prev in idle list } semid INTEGER, { semid for this VP } lock INTEGER { VP protection } ); CREATE UNIQUE INDEX sysvplst_vpidix ON sysvplst(vpid); REVOKE ALL ON sysvplst FROM PUBLIC; GRANT SELECT ON sysvplst TO PUBLIC; { Data Replication control block } CREATE TABLE sysdrcb { Internal Use Only } ( address INTEGER, { address of drcb structure } version INTEGER, { drcb version } lock INTEGER, { drcb lock } type INTEGER, { drcb server type } name CHAR(128), { drcb server name;128=IDENTSIZE} intvl INTEGER, { dr buffer flush interval } timeout INTEGER, { dr network timeout } drauto INTEGER, { dr auto } lostfound CHAR(256), { dr lost+found pathname } state INTEGER, { dr server state } failrecvr INTEGER, { dr failure recovery flags } pingtime INTEGER, { dr last ping time } sessiontid INTEGER, { dr session thread } pingtid INTEGER, { dr ping thread } applytid INTEGER, { dr apply thread } recvrtid INTEGER, { logcial recovery thread } scb INTEGER, { dr scb } client_type INTEGER, { dr client type } no_kill INTEGER, { dr no_kill flag } no_clients INTEGER, { dr no_clients flag } lgr_scb INTEGER, { logcical recovery scb } lgr_rstcb INTEGER, { logcical recovery rstcb } lgr_bufsize INTEGER, { logical recovery buffer size } lgr_numbufs INTEGER, { number logcial recovery buffers} ckptaddr INTEGER, { dr last ckpt address } cpflag INTEGER, { dr cpflag } bufflag INTEGER, { dr bufflag } lg_offs INTEGER, { dr lg_offs } ll INTEGER, { dr logical log info } bufcur INTEGER, { dr current buffer } bqempty INTEGER, { dr empty q } bqfull INTEGER { dr full q } ); REVOKE ALL ON sysdrcb FROM PUBLIC; GRANT SELECT ON sysdrcb TO PUBLIC; { CDR queued info table } CREATE TABLE syscdrq { Internal Use Only } ( srvid INTEGER, { CDR server id } repid INTEGER, { CDR replicate id } srcid INTEGER, { CDR source server id } srvname CHAR(128), { target server name } replname CHAR(128), { collection or replicate name } srcname CHAR(128), { source server name } bytesqued INTEGER { number of bytes queued } ); CREATE UNIQUE INDEX syscdrq_idx ON syscdrq(srvid,repid,srcid); REVOKE ALL ON syscdrq FROM PUBLIC; GRANT SELECT ON syscdrq TO PUBLIC; { CDR trans. processed info table } CREATE TABLE syscdrtx { Internal Use Only } ( srvid INTEGER, { CDR server id } srvname CHAR(128), { target server name } txprocssd INTEGER, { number of trans. processed } txcmmtd INTEGER, { number of trans. committed } txabrtd INTEGER, { number of trans. aborted } rowscmmtd INTEGER, { number of rows committed } rowsabrtd INTEGER, { number of rows aborted } txbadcnt INTEGER { number of trans. bad commit time } ); CREATE UNIQUE INDEX syscdrtx_idx ON syscdrtx(srvid); REVOKE ALL ON syscdrtx FROM PUBLIC; GRANT SELECT ON syscdrtx TO PUBLIC; { CDR server } CREATE TABLE syscdrs { Internal Use Only } ( servid INTEGER, { server id } servname CHAR(128), { server name } cnnstate CHAR(1), { connection state } cnnstatechg INTEGER, { time connection status changed } servstate CHAR(1), { server state } ishub CHAR(1), { hub flag } isleaf CHAR(1), { leaf flag } rootserverid INTEGER, { root server id } forwardnodeid INTEGER, { forward node server id } timeout INTEGER { idle connection timeout } ); CREATE UNIQUE INDEX syscdrs_idx ON syscdrs(servid); REVOKE ALL ON syscdrs FROM PUBLIC; GRANT SELECT ON syscdrs TO PUBLIC; { CDR in memory send progress table } CREATE TABLE syscdrprog { Internal Use Only } ( dest_id INTEGER, group_id INTEGER, source_id INTEGER, key_acked_srv INTEGER, key_acked_lgid INTEGER, key_acked_lgpos INTEGER, key_acked_seq INTEGER, tx_stamp_1 INTEGER, tx_stamp_2 INTEGER ); CREATE UNIQUE INDEX syscdrprog_idx ON syscdrprog(dest_id, group_id, source_id); REVOKE ALL ON syscdrprog FROM PUBLIC; { CDR in memory queues } CREATE TABLE syscdrsend_txn { Internal Use Only } ( ctkeyserverid INTEGER, ctkeyid INTEGER, ctkeypos INTEGER, ctkeysequence INTEGER, ctstamp1 INTEGER, ctstamp2 INTEGER, ctcommittime INTEGER, ctuserid INTEGER, ctfromid INTEGER ); CREATE UNIQUE INDEX syscdrsend_tidx ON syscdrsend_txn(ctstamp1,ctstamp2); REVOKE ALL ON syscdrsend_txn FROM PUBLIC; CREATE TABLE syscdrack_txn { Internal Use Only } ( ctkeyserverid INTEGER, ctkeyid INTEGER, ctkeypos INTEGER, ctkeysequence INTEGER, ctstamp1 INTEGER, ctstamp2 INTEGER, ctcommittime INTEGER, ctuserid INTEGER, ctfromid INTEGER ); CREATE UNIQUE INDEX syscdrack_tidx ON syscdrack_txn(ctstamp1,ctstamp2); REVOKE ALL ON syscdrack_txn FROM PUBLIC; CREATE TABLE syscdrctrl_txn { Internal Use Only } ( ctkeyserverid INTEGER, ctkeyid INTEGER, ctkeypos INTEGER, ctkeysequence INTEGER, ctstamp1 INTEGER, ctstamp2 INTEGER, ctcommittime INTEGER, ctuserid INTEGER, ctfromid INTEGER ); CREATE UNIQUE INDEX syscdrctrl_tidx ON syscdrctrl_txn(ctstamp1,ctstamp2); REVOKE ALL ON syscdrctrl_txn FROM PUBLIC; CREATE TABLE syscdrsync_txn { Internal Use Only } ( ctkeyserverid INTEGER, ctkeyid INTEGER, ctkeypos INTEGER, ctkeysequence INTEGER, ctstamp1 INTEGER, ctstamp2 INTEGER, ctcommittime INTEGER, ctuserid INTEGER, ctfromid INTEGER ); CREATE UNIQUE INDEX syscdrsync_tidx ON syscdrsync_txn(ctstamp1,ctstamp2); REVOKE ALL ON syscdrsync_txn FROM PUBLIC; CREATE TABLE syscdrrecv_txn { Internal Use Only } ( ctkeyserverid INTEGER, ctkeyid INTEGER, ctkeypos INTEGER, ctkeysequence INTEGER, ctstamp1 INTEGER, ctstamp2 INTEGER, ctcommittime INTEGER, ctuserid INTEGER, ctfromid INTEGER ); CREATE UNIQUE INDEX syscdrsrecv_tidx ON syscdrrecv_txn(ctstamp1,ctstamp2); REVOKE ALL ON syscdrrecv_txn FROM PUBLIC; CREATE TABLE syscdrsend_buf { Internal Use Only } ( cbflags INTEGER, cbsize INTEGER, cbkeyserverid INTEGER, cbkeyid INTEGER, cbkeypos INTEGER, cbkeysequence INTEGER, cbgroupid INTEGER, cbcommittime INTEGER ); CREATE UNIQUE INDEX syscdrsend_bidx ON syscdrsend_buf(cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence); REVOKE ALL ON syscdrsend_buf FROM PUBLIC; CREATE TABLE syscdrack_buf { Internal Use Only } ( cbflags INTEGER, cbsize INTEGER, cbkeyserverid INTEGER, cbkeyid INTEGER, cbkeypos INTEGER, cbkeysequence INTEGER, cbgroupid INTEGER, cbcommittime INTEGER ); CREATE UNIQUE INDEX syscdrack_bidx ON syscdrack_buf(cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence); REVOKE ALL ON syscdrack_buf FROM PUBLIC; CREATE TABLE syscdrctrl_buf { Internal Use Only } ( cbflags INTEGER, cbsize INTEGER, cbkeyserverid INTEGER, cbkeyid INTEGER, cbkeypos INTEGER, cbkeysequence INTEGER, cbgroupid INTEGER, cbcommittime INTEGER ); CREATE UNIQUE INDEX syscdrctrl_bidx ON syscdrctrl_buf(cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence); REVOKE ALL ON syscdrctrl_buf FROM PUBLIC; CREATE TABLE syscdrsync_buf { Internal Use Only } ( cbflags INTEGER, cbsize INTEGER, cbkeyserverid INTEGER, cbkeyid INTEGER, cbkeypos INTEGER, cbkeysequence INTEGER, cbgroupid INTEGER, cbcommittime INTEGER ); CREATE UNIQUE INDEX syscdrsync_bidx ON syscdrsync_buf(cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence); REVOKE ALL ON syscdrsync_buf FROM PUBLIC; CREATE TABLE syscdrrecv_buf { Internal Use Only } ( cbflags INTEGER, cbsize INTEGER, cbkeyserverid INTEGER, cbkeyid INTEGER, cbkeypos INTEGER, cbkeysequence INTEGER, cbgroupid INTEGER, cbcommittime INTEGER ); CREATE UNIQUE INDEX syscdrrecv_bidx ON syscdrrecv_buf(cbkeyserverid, cbkeyid, cbkeypos, cbkeysequence); REVOKE ALL ON syscdrrecv_buf FROM PUBLIC; GRANT SELECT ON syscdrrecv_buf TO PUBLIC; { Physical Log } CREATE TABLE sysplog ( pl_mutex INTEGER, { physical log mutex } pl_b1mutex INTEGER, { buf1's mutex } pl_b1condition INTEGER, { buf1's condition for wait/signal } pl_b1used SMALLINT, { buf1's log buffer used } pl_b1copied SMALLINT, { buf1's log pages actually bcopied } pl_b1buffer INTEGER, { buf1's log buffer } pl_b1wtlist INTEGER, { buf1's waiting for used = copied } pl_b2mutex INTEGER, { buf2's mutex } pl_b2condition INTEGER, { buf2's condition for wait/signal } pl_b2used SMALLINT, { buf2's log buffer used } pl_b2copied SMALLINT, { buf2's log pages actually bcopied } pl_b2buffer INTEGER, { buf2's log buffer } pl_b2wtlist INTEGER, { buf2's waiting for used = copied } pl_curbp INTEGER, { current bp } pl_otherbp INTEGER, { other bp } pl_bufsize SMALLINT, { log buffer size in pages } pl_stamp INTEGER, { log flush timestamp } pl_physaddr INTEGER, { log file disk address } pl_physize INTEGER, { log file size in pages } pl_phypos INTEGER, { log file position in pages } pl_phyused INTEGER, { log file used in pages } pl_phyarch INTEGER { on-line archive position } ); REVOKE ALL ON sysplog FROM PUBLIC; GRANT SELECT ON sysplog TO PUBLIC; { Thread Wait Stats } CREATE TABLE systwaits { Internal Use Only } ( tid INTEGER, { thread id of these stats } starttime INTEGER, { start time of current wait } startrtime INTEGER, { start reset time of current } reason INTEGER, { reason for current wait } wreason SMALLINT, { reason for wstats } wnum INTEGER, { number of waits for wreason } wcumtime FLOAT, { cumulative time for wreason } wmaxtime INTEGER { maximum time for wreason } ); CREATE UNIQUE INDEX systwaits_tid ON systwaits(tid, wreason); REVOKE ALL ON systwaits FROM PUBLIC; GRANT SELECT ON systwaits TO PUBLIC; { Mutexes } CREATE TABLE sysmtxlst { Internal Use Only } ( mtx_id INTEGER, { id of this mutex } mtx_address INTEGER, { address of this mutex } mtx_next INTEGER, { pointer to next mutex in list } mtx_prev INTEGER, { pointer to prev mutex in list } mtx_lock INTEGER, { mutex lock 0=avail, 1=held } mtx_wtlock INTEGER, { protects wait list } mtx_holder INTEGER, { thread holding lock } mtx_wtlist INTEGER, { address of first thread on list} mtx_type SMALLINT, { type of mutex } mtx_flags SMALLINT, { flags } mtx_lkcnt SMALLINT, { count of locks by same thread } mtx_name CHAR(12), { name of mutex } mtx_nwaits INTEGER, { number of waits on this mutex } mtx_nservs INTEGER, { number of services } mtx_curlen INTEGER, { current length } mtx_totlen INTEGER, { total queue length } mtx_maxlen INTEGER, { maximum queue length } mtx_waittime FLOAT, { cumulative wait time (usecs) } mtx_servtime FLOAT, { cumulative service time (usecs)} mtx_maxwait INTEGER { maximum wait time (usecs) } ); CREATE UNIQUE INDEX sysmtxlstix1 ON sysmtxlst(mtx_id); CREATE UNIQUE INDEX sysmtxlstix2 ON sysmtxlst(mtx_address); REVOKE ALL ON sysmtxlst FROM PUBLIC; GRANT SELECT ON sysmtxlst TO PUBLIC; { Conditions } CREATE TABLE sysconlst { Internal Use Only } ( con_id INTEGER, { id of this condition } con_address INTEGER, { address of this condition } con_next INTEGER, { pointer to next condition in list} con_prev INTEGER, { pointer to prev condition in list} con_lock INTEGER, { condition lock 0=avail, 1=held} con_wtlist INTEGER, { address of first thread on wait list} con_type INTEGER, { type of condition (const) } con_name CHAR(12), { name of condition } con_nwaits INTEGER, { number of waits on this mutex } con_nservs INTEGER, { number of services } con_curlen INTEGER, { current length } con_totlen INTEGER, { total queue length } con_maxlen INTEGER, { maximum queue length } con_waittime FLOAT, { cumulative wait time (usecs) } con_servtime FLOAT, { cumulative service time (usecs)} con_maxwait INTEGER { maximum wait time (usecs) } ); CREATE UNIQUE INDEX sysconlstix1 ON sysconlst(con_id); CREATE UNIQUE INDEX sysconlstix2 ON sysconlst(con_address); REVOKE ALL ON sysconlst FROM PUBLIC; GRANT SELECT ON sysconlst TO PUBLIC; { Pools } CREATE TABLE syspoollst { Internal Use Only } ( po_id SMALLINT, { id of this pool } po_address INTEGER, { address of this pool } po_next INTEGER, { pointer to next pool in list } po_prev INTEGER, { pointer to prev pool in list } po_lock INTEGER, { lock to synchronise } po_name CHAR(12), { name of pool } po_class SMALLINT, { pool class 1=resident, 2=virtual, 3=message} po_flags SMALLINT, { notify if forget to free } po_freeamt INTEGER, { total amount in free list } po_usedamt INTEGER, { total amount in used list } po_freelist INTEGER, { address of free block list } po_list INTEGER { address of pools block list } ); CREATE UNIQUE INDEX syspoollstix1 ON syspoollst(po_id); CREATE UNIQUE INDEX syspoollstix2 ON syspoollst(po_address); REVOKE ALL ON syspoollst FROM PUBLIC; GRANT SELECT ON syspoollst TO PUBLIC; { Segments } CREATE TABLE sysseglst { Internal Use Only } ( seg_address INTEGER, { address of segment structure } seg_next INTEGER, { pointer to next segment } seg_prev INTEGER, { pointer to prev segment } seg_class SMALLINT, { segment class } seg_size INTEGER, { size of this segment } seg_osshmid INTEGER, { id of this OS segment in this seg} seg_osmaxsize INTEGER, { size of maximum OS segment in this seg} seg_osshmkey INTEGER, { shmkey for first OS segment } seg_procid INTEGER, { process id of creator } seg_userid SMALLINT, { usr id of creator } seg_shmaddr INTEGER, { address of segment } seg_ovhd INTEGER, { amount of overhead bytes } seg_lock INTEGER, { lock to synchronise bitmap access} seg_nextid INTEGER, { segment id of next seg } seg_bmapsz INTEGER, { size of block bitmap } seg_blkused INTEGER, { no. of used blocks in segment } seg_blkfree INTEGER { no. of free blocks in segment } ); REVOKE ALL ON sysseglst FROM PUBLIC; GRANT SELECT ON sysseglst TO PUBLIC; { Dictionary Hash } CREATE TABLE sysdic { Internal Use Only } ( dic_hashno SMALLINT, { hash-value } dic_chainno SMALLINT, { position in hash chain } dic_partnum INTEGER, { partition number } dic_fextsize INTEGER, { first extent size } dic_nextsize INTEGER, { next extent size } dic_locklevel SMALLINT, { lock level } dic_flags INTEGER, { table flags } dic_ps INTEGER, { table permissions } dic_heapptr INTEGER, { struct heap *DD memory heap } dic_altcount SMALLINT, { alt count } dic_ncols SMALLINT, { number of columns } dic_rowsize SMALLINT, { row size in bytes } dic_nindexes SMALLINT, { number of indexes } dic_type CHAR(1), { table type } dic_nrows INTEGER, { number of rows } dic_npused INTEGER, { # pages in table } dic_tabid INTEGER, { dictionary table id } dic_majversion INTEGER, { table major version number } dic_minversion INTEGER, { table minor version number } dic_refcount INTEGER, { # of references to this entry } dic_servername CHAR(128), { like ddt_servername } dic_dbname CHAR(128), { like ddt_dbname } dic_ownername CHAR(32), { like ddt_owner } dic_tabname CHAR(128) { like ddt_name } ); CREATE UNIQUE INDEX sysdicidx ON sysdic(dic_hashno, dic_chainno); REVOKE ALL ON sysdic FROM PUBLIC; GRANT SELECT ON sysdic TO PUBLIC; { Distribution Hash } CREATE TABLE sysdsc { Internal Use Only } ( dis_hashno INTEGER, { hash values of name } dis_chainno SMALLINT, { position in chain } dis_id INTEGER, { id - other than name } dis_refcnt INTEGER, { number of users using entry } dis_delete INTEGER, { marked for delete } dis_heapptr INTEGER, { heap for entry } dis_heapsz INTEGER, { soze of heap } dis_servername CHAR(128), { get ce_name.fn_servername } dis_dbname CHAR(128), { get ce_name.fn_dbname } dis_ownername CHAR(32), { get ce_name.fn_ownername } dis_name CHAR(257) { get ce_name.fn_name } ); CREATE UNIQUE INDEX sysdscidx ON sysdsc(dis_hashno, dis_chainno); REVOKE ALL ON sysdsc FROM PUBLIC; GRANT SELECT ON sysdsc TO PUBLIC; { Procedure Hash } CREATE TABLE sysprc { Internal Use Only } ( prc_hashno INTEGER, { hash values of name } prc_chainno SMALLINT, { position in chain } prc_id INTEGER, { id - other than name } prc_refcnt INTEGER, { number of users using entry } prc_delete INTEGER, { marked for delete } prc_heapptr INTEGER, { heap for entry } prc_heapsz INTEGER, { soze of heap } prc_servername CHAR(128), { get ce_name.fn_servername } prc_dbname CHAR(128), { get ce_name.fn_dbname } prc_ownername CHAR(32), { get ce_name.fn_ownername } prc_name CHAR(257) { get ce_name.fn_name } ); CREATE UNIQUE INDEX sysprcidx ON sysprc(prc_hashno, prc_chainno); REVOKE ALL ON sysprc FROM PUBLIC; GRANT SELECT ON sysprc TO PUBLIC; { Sqscb } CREATE TABLE syssqscb { Internal Use Only } ( scb_sessionid INTEGER, { session id } scb_address INTEGER, { self address } scb_feversion CHAR(4), { see sqscb.fevers } scb_lockmode SMALLINT, { -1: wait, 0: not wait, else: # sec } { see sqscb.waitflag and sqscb.waitsec } scb_sqerrno SMALLINT, { see sqtcb.sqerrno } scb_iserrno SMALLINT { see sqtcb.sqiserrno } ); CREATE UNIQUE INDEX syssqscbidx ON syssqscb ( scb_sessionid DESC ); REVOKE ALL ON syssqscb FROM PUBLIC; GRANT SELECT ON syssqscb TO PUBLIC; { Sdblock } CREATE TABLE syssdblock { Internal Use Only } ( sdb_sessionid INTEGER, { session id } sdb_sdbno INTEGER, { position in array } sdb_iscurrent CHAR(1), { current statement? } sdb_name CHAR(128), { front-end's name for statement } sdb_id SMALLINT, { back-end's id for statement } sdb_flags INTEGER, { defined below } sdb_executions INTEGER, { total # of executions } sdb_cumtime FLOAT, { total cumulative execution time } sdb_bufreads INTEGER, { total # of buffers read } sdb_pagereads INTEGER, { total # of pages read from disk } sdb_bufwrites INTEGER, { total # of buffers written } sdb_pagewrites INTEGER, { total # of pages written } sdb_totsorts INTEGER, { total # of sorts performed } sdb_dsksorts INTEGER, { total # of sorts requiring disk io } sdb_sortspmax INTEGER, { max disk space required by a sort } sdb_cb INTEGER, { conblock for statement } sdb_cblist INTEGER, { list of all cb's in statement } sdb_heap INTEGER, { memory heap for this statement } sdb_partnum INTEGER, { part num for temp blob table } sdb_isfd SMALLINT, { file descriptor for the table } sdb_recnum INTEGER, { row for blob descriptors } sdb_sqerrno SMALLINT, { for fetching, if rows need to be } sdb_sqiserrno SMALLINT, { returned to the user first, but } sdb_sqoffset SMALLINT, { need to set the error in the next } sdb_errstr CHAR(64), { fetch statement } sdb_ntables INTEGER, { number of table descriptors } sdb_sqttab INTEGER, { thread specific tab info } sdb_asynch_sqerrno INTEGER, { error reported by asynch thread } sdb_asynch_sqiserr INTEGER, { error reported by asynch thread } sdb_pool INTEGER, { statement memory pool } sdb_mutex INTEGER, { misc lock (to check sd_sqerrno) } sdb_tgcblist INTEGER, { list of cbs to be use to build } sdb_pdq_prio_req SMALLINT, { requested priority } sdb_pdq_priority SMALLINT, { currently allowed pdq_priority } sdb_max_scans INTEGER { currently allowd # scans } ); CREATE UNIQUE INDEX syssdblockidx ON syssdblock (sdb_sessionid DESC, sdb_sdbno); REVOKE ALL ON syssdblock FROM PUBLIC; GRANT SELECT ON syssdblock TO PUBLIC; { Conblock } CREATE TABLE sysconblock { Internal Use Only } ( cbl_sessionid INTEGER, { session id } cbl_sdbno INTEGER, { position in sdblock array } cbl_conbno SMALLINT, { position in conblock list } cbl_ismainblock CHAR(1), { main block for statement? } cbl_selflag SMALLINT, { see cb_selflag (SQ_*) } cbl_estcost INTEGER, { see cb_estcost } cbl_estrows INTEGER, { see cb_estsize } cbl_flags INTEGER, { see cb_flags } cbl_flags2 INTEGER, { see cb_flags2 } cbl_seqscan SMALLINT, { # of SEQUENTIAL SCANs } cbl_srtscan SMALLINT, { # of SORT SCANs } cbl_autoindex SMALLINT, { # of AUTOINDEX PATHs } cbl_index SMALLINT, { # of INDEX PATHs } cbl_remsql SMALLINT, { # of REMOTE PATHs } cbl_mrgjoin SMALLINT, { # of MERGE JOINs } cbl_dynhashjoin SMALLINT, { # of DYNAMIC HASH JOINs } cbl_keyonly SMALLINT, { # of (Key-Only)s } cbl_tempfile SMALLINT, { # of Temporary Files } cbl_tempview SMALLINT, { # of Temp Tables For View } cbl_secthreads SMALLINT, { # of Secondary Threads } cbl_stmt CHAR(32000) { current statement } ); CREATE UNIQUE INDEX sysconblockidx ON sysconblock ( cbl_sessionid DESC, cbL_sdbno, cbl_conbno); REVOKE ALL ON sysconblock FROM PUBLIC; GRANT SELECT ON sysconblock TO PUBLIC; { Opendb } CREATE TABLE sysopendb { Internal Use Only } ( odb_sessionid INTEGER, { session id } odb_odbno INTEGER, { position in opendb array } odb_dbname CHAR(128), { database name } odb_iscurrent CHAR(1), { no==sdb_current ? 'Y' : 'N' } odb_islog CHAR(1), { !logflg ? 'Y' : 'N' } odb_isansi CHAR(1), { ansiflg ? 'Y' : 'N' } odb_isolation SMALLINT, { isolation level see xtype } odb_usrtype CHAR(1), { user type (DBA, CONNECT .. } odb_prior SMALLINT, { priority } odb_tmstamp INTEGER, { timestamp for last access } odb_lc_collate CHAR(36), { value for LC_COLLATE } odb_dbflags SMALLINT { 1 if DB_EXCLUSIVE } ); CREATE UNIQUE INDEX sysopendbidx ON sysopendb (odb_sessionid DESC, odb_odbno); REVOKE ALL ON sysopendb FROM PUBLIC; GRANT SELECT ON sysopendb TO PUBLIC; { SQL state and statement } CREATE TABLE syssqlstat { Internal Use Only } ( sqs_sessionid INTEGER, { session id } sqs_dbname CHAR(128), { database name } sqs_iso SMALLINT, { Isolation level } sqs_lockmode SMALLINT, { lock mode } sqs_sqlerror SMALLINT, { sql error of last SQL stmt } sqs_isamerror SMALLINT, { isam error of last SQL stmt } sqs_feversion CHAR(4), { FE Version } sqs_statement CHAR(200) { last SQL statement } ); REVOKE ALL ON syssqlstat FROM PUBLIC; GRANT SELECT ON syssqlstat TO PUBLIC; { LRU buffers } CREATE TABLE syslrus ( lru_num INT, { Number of Lru Queue } lru_nfree INT, { Free Buffers in Lru Queue } lru_nmod INT { Modified Buffers in Lru Queue } ); CREATE UNIQUE INDEX syslrusix1 ON syslrus(lru_num); REVOKE ALL ON syslrus FROM PUBLIC; GRANT SELECT ON syslrus TO PUBLIC; { Shared memory values } CREATE TABLE sysshmvals ( sh_mode INT, { turbo mode number } sh_boottime INT, { boot time of day } sh_pfclrtime INT, { time profilers were last clr } sh_curtime INT, { current mt_time } sh_bootstamp INT, { boot time stamp } sh_stamp INT, { current time stamp } sh_mainlooptcb INT, { address of main daemon thread } sh_sysflags INT, { system operating flags } sh_maxchunks INT, { size of chunk table } sh_maxdbspaces INT, { size of dbspace table } sh_maxuserthreads INT, { max # of user structures } sh_maxtrans INT, { max # of trans structures } sh_maxlocks INT, { # of locks total } sh_maxlogs INT, { size of log table } sh_nbuffs INT, { # of buffers total } sh_pagesize INT, { buffer size in bytes } sh_nlrus INT, { # of lru queues } sh_maxdirty INT, { LRU can have this % dirty pages } sh_mindirty INT, { LRU has % dirty pages after clean } sh_ncleaners INT, { # of cleaning/flushing procs } sh_longtx INT, { the long transaction flag } sh_optstgbsnum INT, { Subsystem Staging Blobspace } sh_cpflag INT, { TRUE => doing checkpoint } sh_rapages INT, { Number of pages to read ahead } sh_rathreshold INT, { When to start next read ahead } sh_lastlogfreed INT, { last log (id) written to tape } sh_rmdlktout INT, { max timeout when distributed } sh_narchivers INT, { number of active archives } sh_maxpdqpriority INT ); { max pdqpriority } REVOKE ALL ON sysshmvals FROM PUBLIC; GRANT SELECT ON sysshmvals TO PUBLIC; { C2 Audit info } CREATE TABLE sysadtinfo { Internal Use Only } ( adtmode INTEGER, { Current audit level } adterr INTEGER, { Action on errors } adtsize INTEGER, { Max size of audit trail } adtpath CHAR(256), { Dir to send audit records to } adtfile INTEGER { File within dir to write to } ); REVOKE ALL ON sysadtinfo FROM PUBLIC; { C2 Audit call } CREATE TABLE syscrtadt { Internal Use Only } ( event INTEGER, { Event to audit } result INTEGER, { Success or Failure } data CHAR(256) { Additional data to audit } ); REVOKE ALL ON syscrtadt FROM PUBLIC; { get info out of catalogs and save it } SELECT tabid FROM systables WHERE tabname IN ( 'sysdbspartn', 'systabnames', 'sysrawdsk', 'syspaghdr', 'sysslttab', 'syssltdat', 'syschfree', 'sysptnhdr', 'sysptnkey', 'sysptnext', 'sysptncol', 'sysptnbit', 'sysrstcb', 'systxptab', 'syslcktab', 'sysbufhdr', 'sysdbstab', 'syschktab', 'sysmchktab', 'syslogfil', 'sysbtcreq', 'systraces', 'sysptntab', 'sysshmem', 'sysshmhdr', 'sysscblst', 'systcblst', 'sysvplst', 'systwaits', 'sysdrcb', 'sysadtinfo', 'syscrtadt', 'sysmtxlst', 'sysconlst', 'syspoollst', 'sysseglst', 'sysdic', 'sysprc', 'sysdsc', 'syssqscb', 'syssdblock', 'sysconblock', 'sysopendb', 'syssqlstat', 'syslrus', 'sysshmvals', 'sysplog', 'syscfgtab', 'syscdrs', 'syscdrq', 'syscdrtx', 'syscdrprog', 'syscdrsend_txn', 'syscdrack_txn','syscdrctrl_txn', 'syscdrsync_txn', 'syscdrrecv_txn', 'syscdrsend_buf','syscdrack_buf', 'syscdrctrl_buf', 'syscdrsync_buf', 'syscdrrecv_buf') INTO TEMP temptabid WITH NO LOG; SELECT * FROM systables WHERE tabid IN (SELECT tabid FROM temptabid) INTO TEMP tempsystab WITH NO LOG; SELECT * FROM syscolumns WHERE tabid IN (SELECT tabid FROM temptabid) INTO TEMP tempsyscol WITH NO LOG; SELECT * FROM sysindices WHERE tabid IN (SELECT tabid FROM temptabid) INTO TEMP tempsysidx WITH NO LOG; SELECT * FROM systabauth WHERE tabid IN (SELECT tabid FROM temptabid) INTO TEMP tempsysauth WITH NO LOG; SELECT * FROM sysobjstate WHERE tabid IN (SELECT tabid FROM temptabid) INTO TEMP tempsysobj WITH NO LOG; { reset partnums so internally we recognize these as pseudo tables, also update nrows to clue in the optimizer } UPDATE tempsystab SET (partnum,nrows) = (257,10) WHERE tabname = 'sysdbspartn'; UPDATE tempsystab SET (partnum,nrows) = (1,100000) WHERE tabname = 'sysrawdsk'; UPDATE tempsystab SET (partnum,nrows) = (2,100000) WHERE tabname = 'syspaghdr'; UPDATE tempsystab SET (partnum,nrows) = (3,1000000) WHERE tabname = 'sysslttab'; UPDATE tempsystab SET (partnum,nrows) = (4,1000000) WHERE tabname = 'syssltdat'; UPDATE tempsystab SET (partnum,nrows) = (5,100) WHERE tabname = 'syschfree'; UPDATE tempsystab SET (partnum,nrows) = (6,100) WHERE tabname = 'syscfgtab'; UPDATE tempsystab SET (partnum,nrows) = (10,1000) WHERE tabname = 'sysptnhdr'; UPDATE tempsystab SET (partnum,nrows) = (11,1000) WHERE tabname = 'sysptnkey'; UPDATE tempsystab SET (partnum,nrows) = (12,1000) WHERE tabname = 'sysptnext'; UPDATE tempsystab SET (partnum,nrows) = (13,1000) WHERE tabname = 'sysptncol'; UPDATE tempsystab SET (partnum,nrows) = (14,10000) WHERE tabname = 'sysptnbit'; UPDATE tempsystab SET (partnum,nrows) = (15,1000) WHERE tabname = 'systabnames'; UPDATE tempsystab SET (partnum,nrows) = (20,100) WHERE tabname = 'sysptntab'; UPDATE tempsystab SET (partnum,nrows) = (21,10000) WHERE tabname = 'syslcktab'; UPDATE tempsystab SET (partnum,nrows) = (22,1000) WHERE tabname = 'sysbufhdr'; UPDATE tempsystab SET (partnum,nrows) = (23,10) WHERE tabname = 'sysdbstab'; UPDATE tempsystab SET (partnum,nrows) = (24,10) WHERE tabname = 'syschktab'; UPDATE tempsystab SET (partnum,nrows) = (25,10) WHERE tabname = 'sysmchktab'; UPDATE tempsystab SET (partnum,nrows) = (26,100) WHERE tabname = 'sysrstcb'; UPDATE tempsystab SET (partnum,nrows) = (27,100) WHERE tabname = 'systxptab'; UPDATE tempsystab SET (partnum,nrows) = (28,10) WHERE tabname = 'syslogfil'; UPDATE tempsystab SET (partnum,nrows) = (29,100) WHERE tabname = 'sysbtcreq'; UPDATE tempsystab SET (partnum,nrows) = (30,100) WHERE tabname = 'sysshmem'; UPDATE tempsystab SET (partnum,nrows) = (31,100) WHERE tabname = 'sysshmhdr'; UPDATE tempsystab SET (partnum,nrows) = (32,1000) WHERE tabname = 'systraces'; UPDATE tempsystab SET (partnum,nrows) = (33,1) WHERE tabname = 'sysdrcb'; UPDATE tempsystab SET (partnum,nrows) = (34,100) WHERE tabname = 'syslrus'; UPDATE tempsystab SET (partnum,nrows) = (35,1) WHERE tabname = 'sysplog'; UPDATE tempsystab SET (partnum,nrows) = (38,1) WHERE tabname = 'sysshmvals'; UPDATE tempsystab SET (partnum,nrows) = (40,100) WHERE tabname = 'sysscblst'; UPDATE tempsystab SET (partnum,nrows) = (41,100) WHERE tabname = 'systcblst'; UPDATE tempsystab SET (partnum,nrows) = (42,100) WHERE tabname = 'sysvplst'; UPDATE tempsystab SET (partnum,nrows) = (43,100) WHERE tabname = 'systwaits'; UPDATE tempsystab SET (partnum,nrows) = (44,100000) WHERE tabname = 'sysmtxlst'; UPDATE tempsystab SET (partnum,nrows) = (45,1000) WHERE tabname = 'sysconlst'; UPDATE tempsystab SET (partnum,nrows) = (46,10000) WHERE tabname = 'syspoollst'; UPDATE tempsystab SET (partnum,nrows) = (47,10) WHERE tabname = 'sysseglst'; UPDATE tempsystab SET (partnum,nrows) = (60,100) WHERE tabname = 'sysdic'; UPDATE tempsystab SET (partnum,nrows) = (61,10) WHERE tabname = 'sysprc'; UPDATE tempsystab SET (partnum,nrows) = (62,10) WHERE tabname = 'sysdsc'; UPDATE tempsystab SET (partnum,nrows) = (63,100) WHERE tabname = 'syssqscb'; UPDATE tempsystab SET (partnum,nrows) = (64,1000) WHERE tabname = 'syssdblock'; UPDATE tempsystab SET (partnum,nrows) = (65,1000) WHERE tabname = 'sysconblock'; UPDATE tempsystab SET (partnum,nrows) = (66,100) WHERE tabname = 'sysopendb'; UPDATE tempsystab SET (partnum,nrows) = (69,100) WHERE tabname = 'syssqlstat'; UPDATE tempsystab SET (partnum,nrows) = (70,100) WHERE tabname = 'syscdrs'; UPDATE tempsystab SET (partnum,nrows) = (71,100) WHERE tabname = 'syscdrq'; UPDATE tempsystab SET (partnum,nrows) = (72,100) WHERE tabname = 'syscdrtx'; UPDATE tempsystab SET (partnum,nrows) = (73,100) WHERE tabname = 'syscdrprog'; UPDATE tempsystab SET (partnum,nrows) = (74,100) WHERE tabname = 'syscdrsend_txn'; UPDATE tempsystab SET (partnum,nrows) = (75,100) WHERE tabname = 'syscdrack_txn'; UPDATE tempsystab SET (partnum,nrows) = (76,100) WHERE tabname = 'syscdrctrl_txn'; UPDATE tempsystab SET (partnum,nrows) = (77,100) WHERE tabname = 'syscdrsync_txn'; UPDATE tempsystab SET (partnum,nrows) = (78,100) WHERE tabname = 'syscdrrecv_txn'; UPDATE tempsystab SET (partnum,nrows) = (79,100) WHERE tabname = 'syscdrsend_buf'; UPDATE tempsystab SET (partnum,nrows) = (80,100) WHERE tabname = 'syscdrack_buf'; UPDATE tempsystab SET (partnum,nrows) = (81,100) WHERE tabname = 'syscdrctrl_buf'; UPDATE tempsystab SET (partnum,nrows) = (82,100) WHERE tabname = 'syscdrsync_buf'; UPDATE tempsystab SET (partnum,nrows) = (83,100) WHERE tabname = 'syscdrrecv_buf'; UPDATE tempsystab SET (partnum,nrows) = (1025, 1) WHERE tabname = 'sysadtinfo'; UPDATE tempsystab SET (partnum,nrows) = (1026, 1) WHERE tabname = 'syscrtadt'; DROP TABLE sysdbspartn; DROP TABLE sysrawdsk; DROP TABLE syspaghdr; DROP TABLE sysslttab; DROP TABLE syssltdat; DROP TABLE syschfree; DROP TABLE sysptnhdr; DROP TABLE sysptnkey; DROP TABLE sysptnext; DROP TABLE sysptncol; DROP TABLE sysptnbit; DROP TABLE systabnames; DROP TABLE sysptntab; DROP TABLE syslcktab; DROP TABLE sysbufhdr; DROP TABLE sysdbstab; DROP TABLE syschktab; DROP TABLE sysmchktab; DROP TABLE sysrstcb; DROP TABLE systxptab; DROP TABLE syslogfil; DROP TABLE sysbtcreq; DROP TABLE sysshmem; DROP TABLE sysshmhdr; DROP TABLE syscfgtab; DROP TABLE systraces; DROP TABLE sysscblst; DROP TABLE systcblst; DROP TABLE sysvplst; DROP TABLE systwaits; DROP TABLE sysdrcb; DROP TABLE sysplog; DROP TABLE sysadtinfo; DROP TABLE syscrtadt; DROP TABLE sysmtxlst; DROP TABLE sysconlst; DROP TABLE syspoollst; DROP TABLE sysseglst; DROP TABLE sysdic; DROP TABLE sysprc; DROP TABLE sysdsc; DROP TABLE syssqscb; DROP TABLE syssdblock; DROP TABLE sysconblock; DROP TABLE sysopendb; DROP TABLE syssqlstat; DROP TABLE syslrus; DROP TABLE sysshmvals; DROP TABLE syscdrs; DROP TABLE syscdrq; DROP TABLE syscdrtx; DROP TABLE syscdrprog; DROP TABLE syscdrsend_txn; DROP TABLE syscdrack_txn; DROP TABLE syscdrctrl_txn; DROP TABLE syscdrsync_txn; DROP TABLE syscdrrecv_txn; DROP TABLE syscdrsend_buf; DROP TABLE syscdrack_buf; DROP TABLE syscdrctrl_buf; DROP TABLE syscdrsync_buf; DROP TABLE syscdrrecv_buf; { reinsert modified catalog info into catalogs } INSERT INTO systables SELECT * FROM tempsystab; INSERT INTO syscolumns SELECT * FROM tempsyscol; INSERT INTO sysindices SELECT * FROM tempsysidx; INSERT INTO systabauth SELECT * FROM tempsysauth; INSERT INTO sysobjstate SELECT * FROM tempsysobj; DROP TABLE tempsystab; DROP TABLE tempsyscol; DROP TABLE tempsysidx; DROP TABLE tempsysauth; DROP TABLE tempsysobj; { create a table to associate strings wither various tables' flags/types columns } CREATE TABLE flags_text (tabname CHAR(128), flags INT, txt CHAR(50)); CREATE UNIQUE INDEX flags_text_ix1 ON flags_text(tabname, flags); { Session waits reasons } INSERT INTO flags_text VALUES ('systwaits', 0, 'unspecified'); INSERT INTO flags_text VALUES ('systwaits', 1, 'buffer'); INSERT INTO flags_text VALUES ('systwaits', 2, 'lock'); INSERT INTO flags_text VALUES ('systwaits', 3, 'aio'); INSERT INTO flags_text VALUES ('systwaits', 4, 'mt yield 0'); INSERT INTO flags_text VALUES ('systwaits', 5, 'mt yield n'); INSERT INTO flags_text VALUES ('systwaits', 6, 'mt yield'); INSERT INTO flags_text VALUES ('systwaits', 7, 'checkpoint'); INSERT INTO flags_text VALUES ('systwaits', 8, 'log i/o'); INSERT INTO flags_text VALUES ('systwaits', 9, 'log copy'); INSERT INTO flags_text VALUES ('systwaits', 10, 'condition'); INSERT INTO flags_text VALUES ('systwaits', 11, 'lock mutex'); INSERT INTO flags_text VALUES ('systwaits', 12, 'lockfree mutex'); INSERT INTO flags_text VALUES ('systwaits', 13, 'deadlock mutex'); INSERT INTO flags_text VALUES ('systwaits', 14, 'lrus mutex'); INSERT INTO flags_text VALUES ('systwaits', 15, 'tblsp mutex'); INSERT INTO flags_text VALUES ('systwaits', 16, 'log mutex'); INSERT INTO flags_text VALUES ('systwaits', 17, 'ckpt mutex'); INSERT INTO flags_text VALUES ('systwaits', 18, 'mutex'); INSERT INTO flags_text VALUES ('systwaits', 19, 'mt ready'); INSERT INTO flags_text VALUES ('systwaits', 20, 'mt yield x'); INSERT INTO flags_text VALUES ('systwaits', 21, 'running'); { VP Classes } INSERT INTO flags_text VALUES ('sysvplst', 0, 'cpu'); INSERT INTO flags_text VALUES ('sysvplst', 1, 'aio'); INSERT INTO flags_text VALUES ('sysvplst', 2, 'tli'); INSERT INTO flags_text VALUES ('sysvplst', 3, 'shm'); INSERT INTO flags_text VALUES ('sysvplst', 4, 'lio'); INSERT INTO flags_text VALUES ('sysvplst', 5, 'pio'); INSERT INTO flags_text VALUES ('sysvplst', 6, 'adm'); INSERT INTO flags_text VALUES ('sysvplst', 7, 'opt'); INSERT INTO flags_text VALUES ('sysvplst', 8, 'soc'); INSERT INTO flags_text VALUES ('sysvplst', 9, 'msc'); INSERT INTO flags_text VALUES ('sysvplst', 10, 'adt'); INSERT INTO flags_text VALUES ('sysvplst', 11, 'kio'); INSERT INTO flags_text VALUES ('sysvplst', 12, 'str'); INSERT INTO flags_text VALUES ('sysvplst', 13, 'csm'); INSERT INTO flags_text VALUES ('sysvplst', 14, 'ntk'); { Lock types } INSERT INTO flags_text VALUES ('syslcktab', 0, 'NONE'); INSERT INTO flags_text VALUES ('syslcktab', 1, 'BYTE'); INSERT INTO flags_text VALUES ('syslcktab', 2, 'IS'); INSERT INTO flags_text VALUES ('syslcktab', 3, 'S'); INSERT INTO flags_text VALUES ('syslcktab', 4, 'SR'); INSERT INTO flags_text VALUES ('syslcktab', 5, 'U'); INSERT INTO flags_text VALUES ('syslcktab', 6, 'UR'); INSERT INTO flags_text VALUES ('syslcktab', 7, 'IX'); INSERT INTO flags_text VALUES ('syslcktab', 8, 'SIX'); INSERT INTO flags_text VALUES ('syslcktab', 9, 'X'); INSERT INTO flags_text VALUES ('syslcktab', 10,'XR'); { Data Replication } INSERT INTO flags_text VALUES ('sysdrcb', 0, 'Not Initialized'); INSERT INTO flags_text VALUES ('sysdrcb', 1, 'Standard'); INSERT INTO flags_text VALUES ('sysdrcb', 2, 'Primary'); INSERT INTO flags_text VALUES ('sysdrcb', 3, 'Secondary'); INSERT INTO flags_text VALUES ('sysdrcb', 16, 'Off'); INSERT INTO flags_text VALUES ('sysdrcb', 32, 'On'); INSERT INTO flags_text VALUES ('sysdrcb', 64, 'Connecting'); INSERT INTO flags_text VALUES ('sysdrcb', 128, 'Failed'); INSERT INTO flags_text VALUES ('sysdrcb', 288, 'Read-Only'); { Isolation Level } INSERT INTO flags_text VALUES ('sysopendb', 0, 'NOTRANS'); INSERT INTO flags_text VALUES ('sysopendb', 1, 'DIRTY READ'); INSERT INTO flags_text VALUES ('sysopendb', 2, 'COMMITTED READ'); INSERT INTO flags_text VALUES ('sysopendb', 3, 'CURSOR STABILITY'); INSERT INTO flags_text VALUES ('sysopendb', 5, 'REPEATABLE READ'); INSERT INTO flags_text VALUES ('sysopendb', 7, 'DIRTY READ RETAIN UPDATE LOCKS'); INSERT INTO flags_text VALUES ('sysopendb', 8, 'COMMITTED READ RETAIN UPDATE LOCKS'); INSERT INTO flags_text VALUES ('sysopendb', 9, 'CURSOR STABILITY RETAIN UPDATE LOCKS'); { SQL statement types: see incl/sqlstype } INSERT INTO flags_text VALUES ('sqltype', 1, 'SQ_DATABASE'); INSERT INTO flags_text VALUES ('sqltype', 2, 'SQ_SELECT'); INSERT INTO flags_text VALUES ('sqltype', 3, 'SQ_SELINTO'); INSERT INTO flags_text VALUES ('sqltype', 4, 'SQ_UPDATE'); INSERT INTO flags_text VALUES ('sqltype', 5, 'SQ_DELETE'); INSERT INTO flags_text VALUES ('sqltype', 6, 'SQ_INSERT'); INSERT INTO flags_text VALUES ('sqltype', 7, 'SQ_UPDCURR'); INSERT INTO flags_text VALUES ('sqltype', 8, 'SQ_DELCURR'); INSERT INTO flags_text VALUES ('sqltype', 9, 'SQ_LDINSERT'); INSERT INTO flags_text VALUES ('sqltype', 10, 'SQ_LOCK'); INSERT INTO flags_text VALUES ('sqltype', 11, 'SQ_UNLOCK'); INSERT INTO flags_text VALUES ('sqltype', 12, 'SQ_CREADB'); INSERT INTO flags_text VALUES ('sqltype', 13, 'SQ_DROPDB'); INSERT INTO flags_text VALUES ('sqltype', 14, 'SQ_CRETAB'); INSERT INTO flags_text VALUES ('sqltype', 15, 'SQ_DRPTAB'); INSERT INTO flags_text VALUES ('sqltype', 16, 'SQ_CREIDX'); INSERT INTO flags_text VALUES ('sqltype', 17, 'SQ_DRPIDX'); INSERT INTO flags_text VALUES ('sqltype', 18, 'SQ_GRANT'); INSERT INTO flags_text VALUES ('sqltype', 19, 'SQ_REVOKE'); INSERT INTO flags_text VALUES ('sqltype', 20, 'SQ_RENTAB'); INSERT INTO flags_text VALUES ('sqltype', 21, 'SQ_RENCOL'); INSERT INTO flags_text VALUES ('sqltype', 22, 'SQ_CREAUD'); INSERT INTO flags_text VALUES ('sqltype', 23, 'SQ_STRAUD'); INSERT INTO flags_text VALUES ('sqltype', 24, 'SQ_STPAUD'); INSERT INTO flags_text VALUES ('sqltype', 25, 'SQ_DRPAUD'); INSERT INTO flags_text VALUES ('sqltype', 26, 'SQ_RECTAB'); INSERT INTO flags_text VALUES ('sqltype', 27, 'SQ_CHKTAB'); INSERT INTO flags_text VALUES ('sqltype', 28, 'SQ_REPTAB'); INSERT INTO flags_text VALUES ('sqltype', 29, 'SQ_ALTER'); INSERT INTO flags_text VALUES ('sqltype', 30, 'SQ_STATS'); INSERT INTO flags_text VALUES ('sqltype', 31, 'SQ_CLSDB'); INSERT INTO flags_text VALUES ('sqltype', 32, 'SQ_DELALL'); INSERT INTO flags_text VALUES ('sqltype', 33, 'SQ_UPDALL'); INSERT INTO flags_text VALUES ('sqltype', 34, 'SQ_BEGWORK'); INSERT INTO flags_text VALUES ('sqltype', 35, 'SQ_COMMIT'); INSERT INTO flags_text VALUES ('sqltype', 36, 'SQ_ROLLBACK'); INSERT INTO flags_text VALUES ('sqltype', 37, 'SQ_SAVEPOINT'); INSERT INTO flags_text VALUES ('sqltype', 38, 'SQ_STARTDB'); INSERT INTO flags_text VALUES ('sqltype', 39, 'SQ_RFORWARD'); INSERT INTO flags_text VALUES ('sqltype', 40, 'SQ_CREVIEW'); INSERT INTO flags_text VALUES ('sqltype', 41, 'SQ_DROPVIEW'); INSERT INTO flags_text VALUES ('sqltype', 42, 'SQ_DEBUG'); INSERT INTO flags_text VALUES ('sqltype', 43, 'SQ_CREASYN'); INSERT INTO flags_text VALUES ('sqltype', 44, 'SQ_DROPSYN'); INSERT INTO flags_text VALUES ('sqltype', 45, 'SQ_CTEMP'); INSERT INTO flags_text VALUES ('sqltype', 46, 'SQ_WAITFOR'); INSERT INTO flags_text VALUES ('sqltype', 47, 'SQ_ALTIDX'); INSERT INTO flags_text VALUES ('sqltype', 48, 'SQ_ISOLATE'); INSERT INTO flags_text VALUES ('sqltype', 49, 'SQ_SETLOG'); INSERT INTO flags_text VALUES ('sqltype', 50, 'SQ_EXPLAIN'); INSERT INTO flags_text VALUES ('sqltype', 51, 'SQ_SCHEMA'); INSERT INTO flags_text VALUES ('sqltype', 52, 'SQ_OPTIM'); INSERT INTO flags_text VALUES ('sqltype', 53, 'SQ_CREPROC'); INSERT INTO flags_text VALUES ('sqltype', 54, 'SQ_DRPPROC'); INSERT INTO flags_text VALUES ('sqltype', 55, 'SQ_CONSTRMODE'); INSERT INTO flags_text VALUES ('sqltype', 56, 'SQ_EXECPROC'); INSERT INTO flags_text VALUES ('sqltype', 57, 'SQ_DBGFILE'); INSERT INTO flags_text VALUES ('sqltype', 58, 'SQ_CREOPCL'); INSERT INTO flags_text VALUES ('sqltype', 59, 'SQ_ALTOPCL'); INSERT INTO flags_text VALUES ('sqltype', 60, 'SQ_DRPOPCL'); INSERT INTO flags_text VALUES ('sqltype', 61, 'SQ_OPRESERVE'); INSERT INTO flags_text VALUES ('sqltype', 62, 'SQ_OPRELEASE'); INSERT INTO flags_text VALUES ('sqltype', 63, 'SQ_OPTIMEOUT'); INSERT INTO flags_text VALUES ('sqltype', 64, 'SQ_PROCSTATS'); INSERT INTO flags_text VALUES ('sqltype', 65, 'SQ_GRANTGRP'); INSERT INTO flags_text VALUES ('sqltype', 66, 'SQ_REVOKGRP'); INSERT INTO flags_text VALUES ('sqltype', 67, 'SQ_SKINHIBIT'); INSERT INTO flags_text VALUES ('sqltype', 68, 'SQ_SKSHOW'); INSERT INTO flags_text VALUES ('sqltype', 69, 'SQ_SKSMALL'); INSERT INTO flags_text VALUES ('sqltype', 70, 'SQ_CRETRIG'); INSERT INTO flags_text VALUES ('sqltype', 71, 'SQ_DRPTRIG'); INSERT INTO flags_text VALUES ('sqltype', 72, 'SQ_UNKNOWN'); INSERT INTO flags_text VALUES ('sqltype', 73, 'SQ_SETDATASKIP'); INSERT INTO flags_text VALUES ('sqltype', 74, 'SQ_PDQPRIORITY'); INSERT INTO flags_text VALUES ('sqltype', 75, 'SQ_ALTFRAG'); INSERT INTO flags_text VALUES ('sqltype', 76, 'SQ_SETOBJMODE'); INSERT INTO flags_text VALUES ('sqltype', 77, 'SQ_START'); INSERT INTO flags_text VALUES ('sqltype', 78, 'SQ_STOP'); INSERT INTO flags_text VALUES ('sqltype', 79, 'SQ_SETMAC'); INSERT INTO flags_text VALUES ('sqltype', 80, 'SQ_SETDAC'); INSERT INTO flags_text VALUES ('sqltype', 81, 'SQ_SETTBLHI'); INSERT INTO flags_text VALUES ('sqltype', 82, 'SQ_SETLVEXT'); INSERT INTO flags_text VALUES ('sqltype', 83, 'SQ_CREATEROLE'); INSERT INTO flags_text VALUES ('sqltype', 84, 'SQ_DROPROLE'); INSERT INTO flags_text VALUES ('sqltype', 85, 'SQ_SETROLE'); INSERT INTO flags_text VALUES ('sqltype', 86, 'SQ_PASSWD'); INSERT INTO flags_text VALUES ('sqltype', 87, 'SQ_RENDB'); INSERT INTO flags_text VALUES ('sqltype', 88, 'SQ_CREADOM'); INSERT INTO flags_text VALUES ('sqltype', 89, 'SQ_DROPDOM'); INSERT INTO flags_text VALUES ('sqltype', 90, 'SQ_CREANRT'); INSERT INTO flags_text VALUES ('sqltype', 91, 'SQ_DROPNRT'); INSERT INTO flags_text VALUES ('sqltype', 92, 'SQ_CREADT'); INSERT INTO flags_text VALUES ('sqltype', 93, 'SQ_CREACT'); INSERT INTO flags_text VALUES ('sqltype', 94, 'SQ_DROPCT'); INSERT INTO flags_text VALUES ('sqltype', 95, 'SQ_CREABT'); INSERT INTO flags_text VALUES ('sqltype', 96, 'SQ_DROPTYPE'); INSERT INTO flags_text VALUES ('sqltype', 97, 'SQ_ALTERROUTINE'); INSERT INTO flags_text VALUES ('sqltype', 98, 'SQ_CREATEAM'); INSERT INTO flags_text VALUES ('sqltype', 99, 'SQ_DROPAM'); INSERT INTO flags_text VALUES ('sqltype', 100, 'SQ_ALTERAM'); INSERT INTO flags_text VALUES ('sqltype', 101, 'SQ_CREATEOPC'); INSERT INTO flags_text VALUES ('sqltype', 102, 'SQ_DROPOPC'); INSERT INTO flags_text VALUES ('sqltype', 103, 'SQ_CREACST'); INSERT INTO flags_text VALUES ('sqltype', 104, 'SQ_SETRES'); INSERT INTO flags_text VALUES ('sqltype', 105, 'SQ_CREAGG'); INSERT INTO flags_text VALUES ('sqltype', 106, 'SQ_DRPAGG'); INSERT INTO flags_text VALUES ('sqltype', 107, 'SQ_PLOADFILE'); INSERT INTO flags_text VALUES ('sqltype', 108, 'SQ_CHKIDX'); INSERT INTO flags_text VALUES ('sqltype', 109, 'SQ_SCHEDULE'); INSERT INTO flags_text VALUES ('sqltype', 110, 'SQ_SETENV'); INSERT INTO flags_text VALUES ('sqltype', 111, 'SQ_XPS_RES2'); INSERT INTO flags_text VALUES ('sqltype', 112, 'SQ_XPS_RES3'); INSERT INTO flags_text VALUES ('sqltype', 113, 'SQ_XPS_RES4'); INSERT INTO flags_text VALUES ('sqltype', 114, 'SQ_XPS_RES5'); INSERT INTO flags_text VALUES ('sqltype', 116, 'SQ_RENIDX'); { Page Header } INSERT INTO flags_text VALUES ('syspaghdr', 1,'Data Page'); INSERT INTO flags_text VALUES ('syspaghdr', 2,'Partition Descriptor Page'); INSERT INTO flags_text VALUES ('syspaghdr', 4,'Partition Free List Page'); INSERT INTO flags_text VALUES ('syspaghdr', 8,'Chunk Free List Page'); INSERT INTO flags_text VALUES ('syspaghdr', 9,'Remainder Data Page'); INSERT INTO flags_text VALUES ('syspaghdr', 11,'Partition Resident BLOB Page'); INSERT INTO flags_text VALUES ('syspaghdr', 12,'Blobspace Resident BLOB Page'); INSERT INTO flags_text VALUES ('syspaghdr', 13,'BLOB Chunk Free List Bit Page'); INSERT INTO flags_text VALUES ('syspaghdr', 14,'BLOB Chunk BLOB Map Page'); INSERT INTO flags_text VALUES ('syspaghdr', 16,'B-Tree Node Page'); INSERT INTO flags_text VALUES ('syspaghdr', 32,'B-Tree Root Node'); INSERT INTO flags_text VALUES ('syspaghdr', 64,'B-Tree Twig Node'); INSERT INTO flags_text VALUES ('syspaghdr', 128,'B-Tree Leaf Node'); INSERT INTO flags_text VALUES ('syspaghdr', 256,'Logical Log Page'); INSERT INTO flags_text VALUES ('syspaghdr', 512,'Last Page of Log Log'); INSERT INTO flags_text VALUES ('syspaghdr', 1024,'Sync Page of Log Log'); INSERT INTO flags_text VALUES ('syspaghdr', 2048,'Physical Log Page'); INSERT INTO flags_text VALUES ('syspaghdr', 4096,'Reserved Page'); INSERT INTO flags_text VALUES ('syspaghdr', 8192,'Temporarily no physical logging required'); INSERT INTO flags_text VALUES ('syspaghdr', 16384,'Temporarily no physical logging required'); INSERT INTO flags_text VALUES ('syspaghdr', 32768,'B-Tree Leaf Page containing deleted Items'); { Partition Header } INSERT INTO flags_text VALUES ('sysptnhdr', 1, 'Page Level Locking'); INSERT INTO flags_text VALUES ('sysptnhdr', 2, 'Row Level Locking'); INSERT INTO flags_text VALUES ('sysptnhdr', 32,'System created Temp Table'); INSERT INTO flags_text VALUES ('sysptnhdr', 64,'User created Temp Table'); INSERT INTO flags_text VALUES ('sysptnhdr', 128,'Sort File'); INSERT INTO flags_text VALUES ('sysptnhdr', 256,'Contains Varchar Data Type'); INSERT INTO flags_text VALUES ('sysptnhdr', 512,'Contains BLOBSpace BLOBS'); INSERT INTO flags_text VALUES ('sysptnhdr', 1024,'Contains TBLSpace BLOBS'); INSERT INTO flags_text VALUES ('sysptnhdr', 2048,'Contains either Varchars,BLOBS or Rows > PAGESIZE-32'); INSERT INTO flags_text VALUES ('sysptnhdr', 4096,'Contains optical Sub-System BLOBS'); INSERT INTO flags_text VALUES ('sysptnhdr', 8192,'Permanent System created Table ( undroppable )'); INSERT INTO flags_text VALUES ('sysptnhdr', 16384,'Special Function Temp Tables, no Bitmap Maintenance'); { Bitmap } INSERT INTO flags_text VALUES ('sysptnbit',0,'Free Page'); INSERT INTO flags_text VALUES ('sysptnbit',1,'Remainder Page - free Space = Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',2,'PBLOB Page - free Space = Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',4,'Data Page with Room for another Row'); INSERT INTO flags_text VALUES ('sysptnbit',5,'Remainder Page - free Space between Pagesize and 2/3*Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',6,'PBLOB Page - free Space between Pagesize and 2/3*Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',8,'Index Page or Bitmap Page'); INSERT INTO flags_text VALUES ('sysptnbit',9,'Remainder Page - free Space between 2/3*Pagesize and 1/10*Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',10,'PBLOB Page - free Space between 2/3*Pagesize and 1/10*Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',12,'Data Page without Room for another Row'); INSERT INTO flags_text VALUES ('sysptnbit',13,'Remainder Page full - free Space < 1/10*Pagesize'); INSERT INTO flags_text VALUES ('sysptnbit',14,'PBLOB Page full - free Space < 1/10*Pagesize'); { Create a table where the build status for 'sysutils' and any other system activity associated with building 'sysmaster' can be recorded } CREATE TABLE smi_build_status (message_num INTEGER); { Create a table where conversion messages can be entered by front end shell scripts for displaying into the logmessage file } CREATE TABLE logmessage (message_num INTEGER); { Stored procedure for setting boolean 'columns' in views for flags values } CREATE PROCEDURE bitval ( bitset INT, bitmask INT) RETURNING INT; IF (bitset < 0) THEN IF (bitmask < 0) THEN RETURN 1; END IF; LET bitset = bitset + 2147483648; END IF; IF (bitset > 1073741824) THEN IF (bitmask = 1073741824) THEN RETURN 1; END IF; END IF IF (MOD(bitset,2*bitmask) >= bitmask) THEN RETURN 1; END IF RETURN 0; END PROCEDURE; GRANT EXECUTE ON bitval TO PUBLIC; { Stored procedure for converting unix time() long to date } CREATE PROCEDURE l2date ( l INT ) RETURNING DATE; RETURN TRUNC((l/86400) + 25568 ); END PROCEDURE; GRANT EXECUTE ON l2date TO PUBLIC; CREATE PROCEDURE physchunk( physaddr INT ) RETURNING INT; RETURN TRUNC(physaddr/1048576); END PROCEDURE; GRANT EXECUTE ON physchunk TO PUBLIC; CREATE PROCEDURE physpage( physaddr INT ) RETURNING INT; RETURN(MOD(physaddr,1048576)); END PROCEDURE; GRANT EXECUTE ON physpage TO PUBLIC; CREATE PROCEDURE physaddr(chunknum INT, pagenum INT) RETURNING INT; RETURN((chunknum*1048576)+pagenum); END PROCEDURE; GRANT EXECUTE ON physaddr TO PUBLIC; CREATE PROCEDURE partdbsnum (partnum INT ) RETURNING INT; RETURN TRUNC(partnum/1048576); END PROCEDURE; GRANT EXECUTE ON partdbsnum TO PUBLIC; CREATE PROCEDURE partpagenum(partnum INT) RETURNING INT; RETURN(MOD(partnum,1048576)); END PROCEDURE; GRANT EXECUTE ON partpagenum TO PUBLIC; CREATE PROCEDURE partaddr(dbspnum INT, pagenum INT) RETURNING INT; RETURN((dbspnum*1048576)+pagenum); END PROCEDURE; GRANT EXECUTE ON partaddr TO PUBLIC; { Session Waits profile } CREATE VIEW sysseswts (sid, reason, numwaits, cumtime, maxtime) AS SELECT a.sid, c.txt, b.wnum, b.wcumtime, b.wmaxtime FROM sysrstcb a, systwaits b, flags_text c WHERE a.tid = b.tid AND b.wreason = c.flags AND c.tabname = 'systwaits'; GRANT SELECT ON sysseswts TO PUBLIC; { Chunk Free List } CREATE VIEW syschkextents ( ce_chknum, ce_extnum, ce_physaddr, ce_size ) AS SELECT chknum, extnum, start, leng FROM syschfree; GRANT SELECT ON syschkextents TO PUBLIC; { Partition Bit Maps } CREATE VIEW systabpagtypes ( tp_partnum, tp_pagenum, tp_type ) AS SELECT pb_partnum, pb_pagenum, pb_bitmap FROM sysptnbit; GRANT SELECT ON systabpagtypes TO PUBLIC; { Logical Logs } CREATE VIEW syslogs (number, uniqid, size, used, is_used, is_current, is_backed_up, is_new, is_archived, is_temp, flags) AS SELECT number, uniqid, size, used, bitval(flags, '0x1'), bitval(flags, '0x2'), bitval(flags, '0x4'), bitval(flags, '0x8'), bitval(flags, '0x10'), bitval(flags, '0x20'), flags FROM syslogfil WHERE number > 0; GRANT SELECT ON syslogs TO PUBLIC; { Chunks } CREATE VIEW syschunks(chknum, dbsnum, nxchknum, chksize, offset, nfree, mdsize, udsize, udfree, is_offline, is_recovering, is_blobchunk, is_sbchunk, is_inconsistent, flags, fname, mfname, moffset, mis_offline, mis_recovering, mflags) AS SELECT a.chknum, a.dbsnum, a.nxchunk, a.chksize, a.offset, a.nfree, a.mdsize, a.udsize, a.udfree, bitval(a.flags, '0x20'), bitval(a.flags, '0x80'), bitval(a.flags, '0x200'), bitval(a.flags, '0x4000'), bitval(a.flags, '0x1000'), a.flags, a.fname, b.fname, b.offset, bitval(b.flags, '0x20'), bitval(b.flags, '0x80'), b.flags FROM syschktab a, OUTER sysmchktab b WHERE a.chknum = b.chknum AND a.chknum > 0; GRANT SELECT ON syschunks TO PUBLIC; { Dbspaces } CREATE VIEW sysdbspaces(dbsnum, name, owner, fchunk, nchunks, is_mirrored, is_blobspace, is_sbspace, is_temp, flags) AS SELECT dbsnum, name, owner, fchunk, nchunks, bitval(flags, '0x2'), bitval(flags, '0x10'), bitval(flags, '0x8000'), bitval(flags, '0x2000'), flags FROM sysdbstab WHERE dbsnum > 0; GRANT SELECT ON sysdbspaces TO PUBLIC; { Locks (keep for 6.0 compatibility) } CREATE VIEW syslocks (dbsname, tabname, rowidlk, keynum, type, owner, waiter) AS SELECT dbsname, b.tabname, rowidr, keynum, e.txt[1,4], d.sid, f.sid FROM syslcktab a, systabnames b, systxptab c, sysrstcb d, flags_text e, OUTER sysrstcb f WHERE a.partnum = b.partnum AND a.owner = c.address AND c.owner = d.address AND a.wtlist = f.address AND e.tabname = 'syslcktab' AND e.flags = a.type; GRANT SELECT ON syslocks TO PUBLIC; { Locks } CREATE VIEW syslocktab ( lk_id, lk_addr, lk_same, lk_wtlist, lk_owner, lk_list, lk_type, lk_flags, lk_bsize, lk_keynum, lk_rowid, lk_partnum, lk_kvobj, lk_dipnum, lk_grtime ) AS SELECT indx, address, same, wtlist, owner, list, type, flags, bsize, keynum, rowidr, partnum, rowidn, dipnum, grtime FROM syslcktab; GRANT SELECT ON syslocktab TO PUBLIC; { Active sessions } CREATE VIEW syssessions ( sid, username, uid, pid, hostname, tty, connected, feprogram, pooladdr, is_wlatch, is_wlock, is_wbuff, is_wckpt, is_wlogbuf, is_wtrans, is_monitor, is_incrit, state ) AS SELECT a.sid, a.username, a.uid, a.pid, a.hostname, a.ttyerr, a.connected, a.progname, a.poolp, bitval(b.flags, '0x2'), bitval(b.flags, '0x4'), bitval(b.flags, '0x8'), bitval(b.flags, '0x10'), bitval(b.flags, '0x1000'), bitval(b.flags, '0x40000'), bitval(b.flags, '0x80'), bitval(b.flags, '0x100'), b.flags FROM sysscblst a, sysrstcb b WHERE a.address = b.scb AND bitval(b.flags, '0x80000') = 1; { primary thread } GRANT SELECT ON syssessions TO PUBLIC; { Session activity profile } CREATE VIEW syssesprof(sid, lockreqs, locksheld, lockwts, deadlks, lktouts, logrecs, isreads, iswrites, isrewrites, isdeletes, iscommits, isrollbacks, longtxs, bufreads, bufwrites, seqscans, pagreads, pagwrites, total_sorts, dsksorts, max_sortdiskspace, logspused, maxlogsp ) AS SELECT sid,SUM( upf_rqlock),SUM(nlocks),SUM(upf_wtlock),SUM(upf_deadlk), SUM(upf_lktouts),SUM(upf_lgrecs),SUM(upf_isread), SUM(upf_iswrite),SUM(upf_isrwrite),SUM(upf_isdelete), SUM(upf_iscommit),SUM(upf_isrollback),SUM(upf_longtxs), SUM(upf_bufreads),SUM(upf_bufwrites),SUM(upf_seqscans), SUM(nreads), SUM(nwrites), SUM(upf_totsorts), SUM(upf_dsksorts),SUM(upf_srtspmax),SUM(upf_logspuse), SUM(upf_logspmax) FROM sysrstcb WHERE sid > 0 GROUP BY sid; GRANT SELECT ON syssesprof TO PUBLIC; { User and system time by VP } CREATE VIEW sysvpprof ( vpid, class, usercpu, syscpu) AS SELECT a.vpid, b.txt, a.usecs_user, a.usecs_sys FROM sysvplst a, flags_text b WHERE a.flags != 6 AND a.class = b.flags AND b.tabname = 'sysvplst'; GRANT SELECT ON sysvpprof TO PUBLIC; { Partition profile } CREATE VIEW sysptprof (dbsname, tabname, partnum, lockreqs, lockwts, deadlks, lktouts, isreads, iswrites, isrewrites, isdeletes, bufreads, bufwrites, seqscans, pagreads, pagwrites ) AS SELECT a.dbsname, a.tabname, b.partnum, b.pf_rqlock, b.pf_wtlock, b.pf_deadlk, b.pf_lktouts, b.pf_isread, b.pf_iswrite, b.pf_isrwrite, b.pf_isdelete, b.pf_bfcread, b.pf_bfcwrite, b.pf_seqscans, b.pf_dskreads, b.pf_dskwrites FROM systabnames a, sysptntab b WHERE a.partnum = b.partnum; GRANT SELECT ON sysptprof TO PUBLIC; { Profile listing } CREATE VIEW sysprofile ( name, value ) AS SELECT name[4,16], value FROM sysshmhdr WHERE name MATCHES 'pf_*'; GRANT SELECT ON sysprofile TO PUBLIC; { Listing of supported configuration parameters } CREATE VIEW sysconfig ( cf_id, cf_name, cf_flags, cf_original, cf_effective, cf_default ) AS SELECT cf_id, cf_name, cf_flags, cf_original, cf_effective, cf_default FROM syscfgtab WHERE cf_flags = 0; GRANT SELECT ON sysconfig TO PUBLIC; { Extent listings (keep for 6.0 compatibility) } CREATE VIEW sysextents ( dbsname, tabname, start, size) AS SELECT dbsname, tabname, pe_phys, pe_size FROM systabnames a, sysptnext b WHERE a.partnum = b.pe_partnum; GRANT SELECT ON sysextents TO PUBLIC; { Extent listings } CREATE VIEW systabextents ( te_partnum, te_extnum, te_physaddr, te_size, te_pagenum ) AS SELECT pe_partnum, pe_extnum, pe_phys, pe_size, pe_log FROM sysptnext; GRANT SELECT ON systabextents TO PUBLIC; { Data Replication info } CREATE VIEW sysdri (type, state, name, intvl, timeout, lostfound) AS SELECT b.txt, d.txt, a.name, a.intvl, a.timeout, a.lostfound FROM sysdrcb a, flags_text b, sysdrcb c, flags_text d WHERE a.type = b.flags AND b.tabname = 'sysdrcb' AND c.state = d.flags AND d.tabname = 'sysdrcb'; GRANT SELECT ON sysdri TO PUBLIC; { Databases } CREATE VIEW sysdatabases (name, partnum, owner, created, is_logging, is_buff_log, is_ansi, is_nls, flags) AS SELECT name, partnum, owner, DATE(DBINFO('UTC_TO_DATETIME', created)), bitval(flags, 1), bitval(flags, 2), bitval(flags, 4), bitval(flags, 16), flags FROM sysdbspartn; GRANT SELECT ON sysdatabases TO PUBLIC; { Threads view } CREATE VIEW systhreads (th_id, th_addr, th_joinlist, th_joinnext, th_joinee, th_name, th_state, th_priority, th_class, th_vpid, th_mtxwait, th_conwait, th_waketime, th_startwait, th_startrun ) AS SELECT tid, address, joinlist, joinnext, joinee, name, state, priority, class, vpid, wtmutexp, wtcondp, sleep_time, start_wait, run_time FROM systcblst; GRANT SELECT ON systhreads TO PUBLIC; { Mutexes view } CREATE VIEW sysmutexes (mtx_id, mtx_address, mtx_lock, mtx_holder, mtx_wtlist, mtx_name ) AS SELECT mtx_id, mtx_address, mtx_lock, mtx_holder, mtx_wtlist, mtx_name FROM sysmtxlst; GRANT SELECT ON sysmutexes TO PUBLIC; { Conditions view } CREATE VIEW sysconditions (con_id, con_address, con_lock, con_wtlist, con_name ) AS SELECT con_id, con_address, con_lock, con_wtlist, con_name FROM sysconlst; GRANT SELECT ON sysconditions TO PUBLIC; { Pools view } CREATE VIEW syspools (po_id, po_address, po_name, po_class, po_freeamt, po_usedamt ) AS SELECT po_id, po_address, po_name, po_class, po_freeamt, po_usedamt FROM syspoollst; GRANT SELECT ON syspools TO PUBLIC; { Segments view } CREATE VIEW syssegments (seg_address, seg_class, seg_size, seg_osshmid, seg_osshmkey, seg_shmaddr, seg_ovhd, seg_blkused, seg_blkfree) AS SELECT seg_address, seg_class, seg_size, seg_osshmid,seg_osshmkey, seg_shmaddr, seg_ovhd, seg_blkused, seg_blkfree FROM sysseglst; GRANT SELECT ON syssegments TO PUBLIC; { Threads Wait Stats view } CREATE VIEW systhreadwaits (tw_tid, tw_reason, tw_num, tw_cumtime, tw_maxtime) AS SELECT tid, wreason, wnum, wcumtime, wmaxtime FROM systwaits; GRANT SELECT ON systhreadwaits TO PUBLIC; { Mutex queue view } CREATE VIEW sysmutq (mq_mtxid, mq_nwaits, mq_nservs, mq_curlen, mq_totlen, mq_maxlen, mq_waittime, mq_servtime, mq_maxwait) AS SELECT mtx_id, mtx_nwaits, mtx_nservs, mtx_curlen, mtx_totlen, mtx_maxlen, mtx_waittime, mtx_servtime, mtx_maxwait FROM sysmtxlst; GRANT SELECT ON sysmutq TO PUBLIC; { Condition queue view } CREATE VIEW sysconq (cq_conid, cq_nwaits, cq_nservs, cq_curlen, cq_totlen, cq_maxlen, cq_waittime, cq_servtime, cq_maxwait) AS SELECT con_id, con_nwaits, con_nservs, con_curlen, con_totlen, con_maxlen, con_waittime, con_servtime, con_maxwait FROM sysconlst; GRANT SELECT ON sysconq TO PUBLIC; { Userthreads } CREATE VIEW sysuserthreads ( us_indx, us_address, us_txp, us_txwait, us_txlist, us_iserrno, us_isrecnum, us_isfragnum, us_uid, us_name, us_sid, us_scb, us_tid, us_mttcb, us_nxtthread, us_flags, us_nlocks, us_lastlktype, us_lktout, us_lkwait, us_lklist, us_lkwttype, us_lkthreadlist, us_lktolist, us_bfwait, us_bflist, us_bfwtflag, us_bfheldcnt, us_lbufwake, us_lgbuffered, us_rqlock, us_wtlock, us_deadlk, us_lktouts, us_lgrecs, us_isread, us_iswrite, us_isrwrite, us_isdelete, us_iscommit, us_isrollback, us_longtxs, us_bufreads, us_bufwrites, us_pagreads, us_pagwrites, us_seqscans, us_totsorts, us_dsksorts, us_srtspmax, us_logspuse, us_logspmax ) AS SELECT indx, address, txp, txwait, txlist, iserrno, isrecnum, isfragnum, uid, username, sid, scb, tid, mttcb, nxtthread, flags, nlocks, lastlock, lktout, lkwait, wtlist, lkwttype, lkthreadlist, tolist, bfwait, bflist, bfwtflag, bfheld_count, lbufwake, bufferlogging, upf_rqlock, upf_wtlock, upf_deadlk, upf_lktouts, upf_lgrecs, upf_isread, upf_iswrite, upf_isrwrite, upf_isdelete, upf_iscommit, upf_isrollback, upf_longtxs, upf_bufreads, upf_bufwrites, nreads, nwrites, upf_seqscans, upf_totsorts, upf_dsksorts, upf_srtspmax, upf_logspuse, upf_logspmax FROM sysrstcb; GRANT SELECT ON sysuserthreads TO PUBLIC; { systrans } CREATE VIEW systrans ( tx_id, tx_addr, tx_flags, tx_mutex, tx_logbeg, tx_loguniq, tx_logpos, tx_lklist, tx_lkmutex, tx_owner, tx_wtlist, tx_ptlist, tx_nlocks, tx_lktout, tx_isolevel, tx_longtx, tx_coordinator, tx_nremotes ) AS SELECT indx, address, flags, latchp, logbeg, loguniq, logpos, lklist, lklatchp, owner, wtlist, ptlist, nlocks, lkwait, isolevel, longtx, istar_coord, nremotes FROM systxptab; GRANT SELECT ON systrans TO PUBLIC; { Partition Headers } CREATE VIEW systabinfo ( ti_partnum, ti_flags, ti_rowsize, ti_ncols, ti_nkeys, ti_nextns, ti_created, ti_serialv, ti_fextsiz, ti_nextsiz, ti_nptotal, ti_npused, ti_npdata, ti_octptnm, ti_nrows ) AS SELECT partnum, flags, rowsize, ncols, nkeys, nextns, created, serialv, fextsiz, nextsiz, nptotal, npused, npdata, octptnm, nrows FROM sysptnhdr; GRANT SELECT ON systabinfo TO PUBLIC; { Page Headers } CREATE VIEW systabpaghdrs ( pg_partnum, pg_pagenum, pg_physaddr, pg_stamp, pg_stamp2, pg_nslots, pg_flags, pg_frptr, pg_frcnt, pg_next, pg_prev ) AS SELECT * FROM syspaghdr WHERE pg_partnum > 1048576; GRANT SELECT ON systabpaghdrs TO PUBLIC; { Page Headers } CREATE VIEW sysphyspaghdrs ( pg_pagenum, pg_physaddr, pg_stamp, pg_stamp2, pg_nslots, pg_flags, pg_frptr, pg_frcnt, pg_next, pg_prev ) AS SELECT pg_pagenum, pg_physaddr, pg_stamp, pg_stamp2, pg_nslots, pg_flags, pg_frptr, pg_frcnt, pg_next, pg_prev FROM syspaghdr WHERE pg_partnum = 0; GRANT SELECT ON sysphyspaghdrs TO PUBLIC; { C2 Audit mask table } CREATE TABLE sysaudit ( username CHAR(32), { user name } succ1 INTEGER, { success bitmask 1 } succ2 INTEGER, { success bitmask 2 } succ3 INTEGER, { success bitmask 3 } succ4 INTEGER, { success bitmask 4 } succ5 INTEGER, { success bitmask 5 } fail1 INTEGER, { failure bitmask 1 } fail2 INTEGER, { failure bitmask 2 } fail3 INTEGER, { failure bitmask 3 } fail4 INTEGER, { failure bitmask 4 } fail5 INTEGER { failure bitmask 5 } ) LOCK MODE ROW; CREATE UNIQUE INDEX sysaudit_ix1 ON sysaudit(username) IN table; REVOKE ALL ON sysaudit FROM PUBLIC; { Chunk io stats } CREATE VIEW syschkio (chunknum, reads, pagesread, writes, pageswritten, mreads, mpagesread, mwrites, mpageswritten) AS SELECT a.chknum, a.reads, a.pagesread, a.writes, a.pageswritten, b.reads, b.pagesread, b.writes, b.pageswritten FROM syschktab a, OUTER sysmchktab b WHERE a.chknum > 0 AND a.chknum = b.chknum; GRANT SELECT ON syschkio TO PUBLIC; { Locale in which the database was created in } CREATE VIEW sysdbslocale (dbs_dbsname, dbs_collate) AS SELECT b.name, a.collate FROM systabnames a, sysdbspartn b WHERE a.partnum = b.partnum; GRANT SELECT ON sysdbslocale TO PUBLIC; { SQL Dictionary cache } CREATE VIEW sysdiccache (dic_hashno, dic_chainno, dic_refcount, dic_dirtyflag, dic_heapptr, dic_dbname, dic_servername, dic_ownername, dic_tabname) AS SELECT dic_hashno, dic_chainno, dic_refcount, bitval(dic_flags, '0x00800000'), HEX(dic_heapptr), dic_dbname, dic_servername, dic_ownername, dic_tabname FROM sysdic; GRANT SELECT ON sysdiccache TO PUBLIC; { SQL Distribution cache } CREATE VIEW sysdistcache (dis_hashno, dis_chainno, dis_id, dis_refcount, dis_dropped, dis_heapptr, dis_dbname, dis_servername, dis_ownername, dis_distname) AS SELECT dis_hashno, dis_chainno, dis_id, dis_refcnt, dis_delete, HEX(dis_heapptr), dis_dbname, dis_servername, dis_ownername, dis_name FROM sysdsc; GRANT SELECT ON sysdistcache TO PUBLIC; { SQL Procedure cache } CREATE VIEW sysproccache (prc_hashno, prc_chainno, prc_id, prc_refcount, prc_dropped, prc_heapptr, prc_dbname, prc_servername, prc_ownername, prc_procname) AS SELECT prc_hashno, prc_chainno, prc_id, prc_refcnt, prc_delete, HEX(prc_heapptr), prc_dbname, prc_servername, prc_ownername, prc_name FROM sysprc; GRANT SELECT ON sysproccache TO PUBLIC; { SQL Statements } CREATE VIEW syssqlcurall ( sqc_sessionid, sqc_currdb, sqc_isolationlevel, sqc_lockmode, sqc_sqerrno, sqc_isamerr, sqc_fevers) AS SELECT scb_sessionid, odb_dbname, ft.txt, scb_lockmode, scb_sqerrno, scb_iserrno, scb_feversion FROM syssqscb, OUTER ( sysopendb, flags_text ft ) WHERE scb_sessionid == odb_sessionid AND odb_iscurrent == 'Y' AND ft.tabname == 'sysopendb' AND ft.flags == odb_isolation AND scb_feversion > '0.00'; GRANT SELECT ON syssqlcurall TO PUBLIC; { SQL Current session } CREATE VIEW syssqlcurses ( scs_sessionid, scs_currdb, scs_isolationlevel, scs_lockmode, scs_executions, scs_cumtime, scs_bufreads, scs_pagereads, scs_bufwrites, scs_pagewrites, scs_totsorts, scs_dsksorts, scs_sortspmax, scs_sqerrno, scs_isamerr, scs_fevers, scs_sqlstatement) AS SELECT scb_sessionid, odb_dbname, ft.txt, scb_lockmode, sdb_executions, sdb_cumtime, sdb_bufreads, sdb_pagereads, sdb_bufwrites, sdb_pagewrites, sdb_totsorts, sdb_dsksorts, sdb_sortspmax, scb_sqerrno, scb_iserrno, scb_feversion, cbl_stmt FROM syssqscb, syssdblock, OUTER sysconblock, OUTER ( sysopendb, flags_text ft ) WHERE scb_sessionid == odb_sessionid AND scb_sessionid == sdb_sessionid AND scb_sessionid == cbl_sessionid AND scb_feversion > '0.00' AND sdb_sdbno == cbl_sdbno AND sdb_iscurrent == 'Y' AND odb_iscurrent == 'Y' AND cbl_ismainblock == 'Y' AND ft.tabname == 'sysopendb' AND ft.flags == odb_isolation ; GRANT SELECT ON syssqlcurses TO PUBLIC; { Show sqexplain information } CREATE VIEW syssqexplain ( { Internal Use Only } sqx_sessionid, sqx_sdbno, sqx_iscurrent, sqx_executions, sqx_cumtime, sqx_bufreads, sqx_pagereads, sqx_bufwrites, sqx_pagewrites, sqx_totsorts, sqx_dsksorts, sqx_sortspmax, sqx_conbno, sqx_ismain, sqx_selflag, sqx_estcost, sqx_estrows, sqx_seqscan, sqx_srtscan, sqx_autoindex, sqx_index, sqx_remsql, sqx_mrgjoin, sqx_dynhashjoin, sqx_keyonly, sqx_tempfile, sqx_tempview, sqx_secthreads, sqx_sqlstatement) AS SELECT sdb_sessionid, sdb_sdbno, sdb_iscurrent, sdb_executions, sdb_cumtime, sdb_bufreads, sdb_pagereads, sdb_bufwrites, sdb_pagewrites, sdb_totsorts, sdb_dsksorts, sdb_sortspmax, cbl_conbno, cbl_ismainblock, ft.txt, cbl_estcost, cbl_estrows, cbl_seqscan, cbl_srtscan, cbl_autoindex, cbl_index, cbl_remsql, cbl_mrgjoin, cbl_dynhashjoin, cbl_keyonly, cbl_tempfile, cbl_tempview, cbl_secthreads, cbl_stmt FROM syssdblock, OUTER ( sysconblock, flags_text ft ) WHERE sdb_sessionid == cbl_sessionid AND sdb_sdbno == cbl_sdbno AND ft.tabname == 'sqltype' AND ft.flags == cbl_selflag ; GRANT SELECT ON syssqexplain TO PUBLIC; { Extspaces Table } CREATE TABLE sysextspaces { Internal Use Only } ( id INTEGER, { external space id } name CHAR(128), { extspace name } owner CHAR(32), { extspace owner } flags INTEGER, { extspace flags } refcnt INTEGER, { extspace reference count } locsize INTEGER, { size of location } locatio CHAR(256) { external space location } ); CREATE UNIQUE INDEX sysextspace_ix1 ON sysextspaces(name) IN table; REVOKE ALL ON sysextspaces FROM PUBLIC; GRANT SELECT ON sysextspaces TO PUBLIC; { Archive-related Tables } { Volume set information } CREATE TABLE arc_vset ( vset_vid SMALLINT PRIMARY KEY, vset_name CHAR(17) NOT NULL UNIQUE, vset_class CHAR(1) NOT NULL, vset_onsite CHAR(1) NOT NULL, vset_imported CHAR(1) NOT NULL, vset_foreign CHAR(1) NOT NULL, vset_perm_mounted CHAR(1) NOT NULL, vset_transit CHAR(1) NOT NULL, vset_accessibility SMALLINT NOT NULL, vset_owner_node CHAR(255) NOT NULL, vset_dev_node CHAR(255) NOT NULL, vset_dev_type CHAR(128) NOT NULL, vset_dev_driver CHAR(10) NOT NULL, vset_nb_volumes SMALLINT NOT NULL, vset_density CHAR(4), vset_location CHAR(80), vset_parameters CHAR(20), vset_protection CHAR(3), vset_comment CHAR(80) ); REVOKE ALL ON arc_vset FROM PUBLIC; GRANT ALL ON arc_vset TO root; GRANT SELECT ON arc_vset TO PUBLIC; { Volume information } CREATE TABLE arc_volume ( vol_vid SMALLINT NOT NULL, vol_vno SMALLINT NOT NULL, vol_max_space INTEGER NOT NULL, vol_used_space INTEGER NOT NULL, vol_space_exact CHAR(1) NOT NULL, vol_full CHAR(1) NOT NULL, vol_nb_svst INTEGER NOT NULL, vol_nb_svst_phys INTEGER NOT NULL, vol_virtual CHAR(255), vol_parameters CHAR(20), vol_protection CHAR(3), vol_rewind_date DATETIME YEAR TO DAY, vol_comment CHAR(80), vol_label CHAR(6), vol_remote_virtual CHAR(255), PRIMARY KEY (vol_vid, vol_vno) ); REVOKE ALL ON arc_volume FROM PUBLIC; GRANT ALL ON arc_volume TO root; GRANT SELECT ON arc_volume TO PUBLIC; { Volume-set, User relationship information } CREATE TABLE arc_vset_user ( vu_vid SMALLINT NOT NULL, vu_user_node CHAR(255) NOT NULL, vu_user_name CHAR(40) NOT NULL, PRIMARY KEY (vu_vid, vu_user_name) ); REVOKE ALL ON arc_vset_user FROM PUBLIC; GRANT ALL ON arc_vset_user TO root; GRANT SELECT ON arc_vset_user TO PUBLIC; { Disk usage information } CREATE TABLE arc_diskspace_mgr ( dsm_vid SMALLINT NOT NULL, dsm_vno SMALLINT NOT NULL, dsm_pid INTEGER NOT NULL, dsm_spaces_alloc INTEGER NOT NULL); CREATE INDEX arc_dsk_i1 ON arc_diskspace_mgr (dsm_vid, dsm_vno, dsm_pid); REVOKE ALL ON arc_diskspace_mgr FROM PUBLIC; GRANT ALL ON arc_diskspace_mgr TO root; GRANT SELECT ON arc_diskspace_mgr TO PUBLIC; { Request information (for archives, restores, backups) } CREATE TABLE arc_request ( req_rid INTEGER PRIMARY KEY, req_type CHAR(2) NOT NULL, req_status CHAR(2) NOT NULL, req_issue_date DATETIME YEAR TO SECOND, req_user_node CHAR(255) NOT NULL, req_user_name CHAR(40) NOT NULL, req_user_lang CHAR(1) NOT NULL, req_qlf_string CHAR(1200) NOT NULL, req_password BYTE IN TABLE, req_former_rid INTEGER, req_former_sid SMALLINT, req_expiry_date DATETIME YEAR TO SECOND, req_execution_date DATETIME YEAR TO SECOND, req_dflt_dir_name CHAR(255) ); CREATE INDEX arc_req_i1 ON arc_request (req_user_name); REVOKE ALL ON arc_request FROM PUBLIC; GRANT ALL ON arc_request TO root; GRANT SELECT ON arc_request TO PUBLIC; { Volume-Request-PID-usage lock & relationship information } CREATE TABLE arc_vol_lock ( vlck_vid SMALLINT NOT NULL, vlck_vno SMALLINT NOT NULL, vlck_rid INTEGER NOT NULL, vlck_pid INTEGER NOT NULL, vlck_exclusive CHAR(1) NOT NULL, vlck_operation CHAR(1) NOT NULL, PRIMARY KEY (vlck_vid, vlck_vno, vlck_pid) ); REVOKE ALL ON arc_vol_lock FROM PUBLIC; GRANT ALL ON arc_vol_lock TO root; GRANT SELECT ON arc_vol_lock TO PUBLIC; { Pending requests } CREATE TABLE arc_pending_req ( pend_rid INTEGER NOT NULL, pend_lock_pid INTEGER NOT NULL, pend_parent_rid INTEGER, pend_dflt_dir_name CHAR(255), PRIMARY KEY (pend_rid) ); REVOKE ALL ON arc_pending_req FROM PUBLIC; GRANT ALL ON arc_pending_req TO root; GRANT SELECT ON arc_pending_req TO PUBLIC; { Volume set-Request relationship information } CREATE TABLE arc_req_vset ( rv_rid INTEGER NOT NULL, rv_vid SMALLINT NOT NULL, PRIMARY KEY (rv_rid, rv_vid) ); REVOKE ALL ON arc_req_vset FROM PUBLIC; GRANT ALL ON arc_req_vset TO root; GRANT SELECT ON arc_req_vset TO PUBLIC; { Save set information } CREATE TABLE arc_save_set ( svst_rid INTEGER NOT NULL, svst_vid SMALLINT NOT NULL, svst_complete CHAR(1) NOT NULL, svst_attached_rid INTEGER, svst_transit_date DATETIME YEAR TO DAY, svst_nb_volumes SMALLINT NOT NULL, PRIMARY KEY (svst_rid, svst_vid) ); REVOKE ALL ON arc_save_set FROM PUBLIC; GRANT ALL ON arc_save_set TO root; GRANT SELECT ON arc_save_set TO PUBLIC; { File information (all file types) } CREATE TABLE arc_file ( file_rid INTEGER NOT NULL, file_fno INTEGER NOT NULL, file_type CHAR(1) NOT NULL, file_name CHAR(255) NOT NULL, file_dno INTEGER NOT NULL, file_nb_copies SMALLINT NOT NULL, file_compressed CHAR(1) NOT NULL, file_encrypted CHAR(1) NOT NULL, file_creation_date DATETIME YEAR TO DAY NOT NULL, file_modify_date DATETIME YEAR TO DAY, file_expiry_date DATETIME YEAR TO DAY, file_comment CHAR(80), PRIMARY KEY (file_rid, file_fno) ); REVOKE ALL ON arc_file FROM PUBLIC; GRANT ALL ON arc_file TO root; GRANT SELECT ON arc_file TO PUBLIC; { File directory information } CREATE TABLE arc_directory ( dir_rid INTEGER NOT NULL, dir_dno INTEGER NOT NULL, dir_name CHAR(255) NOT NULL, PRIMARY KEY (dir_rid, dir_dno) ); REVOKE ALL ON arc_directory FROM PUBLIC; GRANT ALL ON arc_directory TO root; GRANT SELECT ON arc_directory TO PUBLIC; { DB extract output file information } { Not used by Informix; included for consistency with Computertime } CREATE TABLE arc_db_file ( dbf_rid INTEGER NOT NULL, dbf_fno INTEGER NOT NULL, dbf_db_name CHAR(30) NOT NULL, dbf_user_name CHAR(30) NOT NULL, dbf_table_name CHAR(30) NOT NULL, dbf_nb_rows INTEGER NOT NULL, dbf_retrieved_rows INTEGER, dbf_sql CHAR(255), PRIMARY KEY (dbf_rid, dbf_fno) ); REVOKE ALL ON arc_db_file FROM PUBLIC; GRANT ALL ON arc_db_file TO root; GRANT SELECT ON arc_db_file TO PUBLIC; { Copy information } CREATE TABLE arc_file_copy ( fc_rid INTEGER NOT NULL, fc_fno INTEGER NOT NULL, fc_sno SMALLINT NOT NULL, fc_vid SMALLINT NOT NULL, fc_vno SMALLINT NOT NULL, fc_last_sno CHAR(1) NOT NULL, PRIMARY KEY (fc_vid, fc_vno, fc_rid, fc_fno) ); CREATE INDEX arc_file_copy_i1 ON arc_file_copy (fc_rid, fc_fno); REVOKE ALL ON arc_file_copy FROM PUBLIC; GRANT ALL ON arc_file_copy TO root; GRANT SELECT ON arc_file_copy TO PUBLIC; { Dbspace set definitions; used only by Informix } CREATE TABLE arc_dbspace_set ( ds_dsid SERIAL PRIMARY KEY, ds_name CHAR(128) NOT NULL ); CREATE UNIQUE INDEX arc_dbspace_set_i1 ON arc_dbspace_set (ds_name); REVOKE ALL ON arc_dbspace_set FROM PUBLIC; GRANT ALL ON arc_dbspace_set TO root; GRANT SELECT ON arc_dbspace_set TO PUBLIC; { Dbspace-dbspace set relationships; used only by Informix } CREATE TABLE arc_dbspace ( dbs_name CHAR(128) NOT NULL, dbs_dsid INTEGER NOT NULL REFERENCES arc_dbspace_set ); CREATE INDEX arc_dbspace_i1 ON arc_dbspace (dbs_name); REVOKE ALL ON arc_dbspace FROM PUBLIC; GRANT ALL ON arc_dbspace TO root; GRANT SELECT ON arc_dbspace TO PUBLIC; { Archive event information; used only by Informix } CREATE TABLE arc_archive_event ( ae_rid INTEGER NOT NULL REFERENCES arc_request, ae_dsid INTEGER NOT NULL, ae_level SMALLINT NOT NULL, ae_timestamp INTEGER NOT NULL, ae_prior_rid INTEGER, ae_logid INTEGER ); REVOKE ALL ON arc_archive_event FROM PUBLIC; GRANT ALL ON arc_archive_event TO root; GRANT SELECT ON arc_archive_event TO PUBLIC; CREATE TABLE arc_version ( av_version CHAR(128) NOT NULL, av_name BYTE IN TABLE ); REVOKE ALL ON arc_version FROM PUBLIC; GRANT ALL ON arc_version TO root; { Views are used during inserts and modifies for integrity checking } CREATE VIEW arc_vset_view AS SELECT * FROM arc_vset WHERE vset_class IN ('S', 'U') AND vset_onsite IN ('Y', 'N', 'U') AND vset_imported IN ('Y', 'N') AND vset_perm_mounted IN ('Y', 'N') AND vset_transit IN ('Y', 'N') AND vset_nb_volumes >= 0 WITH CHECK OPTION; REVOKE ALL ON arc_vset_view FROM PUBLIC; GRANT SELECT ON arc_vset_view TO root; GRANT INSERT ON arc_vset_view TO root; GRANT DELETE ON arc_vset_view TO root; GRANT UPDATE ON arc_vset_view TO root; CREATE VIEW arc_volume_view AS SELECT * FROM arc_volume WHERE vol_max_space >= 0 AND vol_used_space >= 0 AND vol_nb_svst >= 0 AND vol_nb_svst_phys >= 0 AND vol_space_exact IN ('Y', 'N') AND vol_full IN ('Y', 'N') AND vol_vid IN (SELECT vset_vid FROM arc_vset) WITH CHECK OPTION; REVOKE ALL ON arc_volume_view FROM PUBLIC; GRANT SELECT ON arc_volume_view TO root; GRANT INSERT ON arc_volume_view TO root; GRANT DELETE ON arc_volume_view TO root; GRANT UPDATE ON arc_volume_view TO root; CREATE VIEW arc_vset_user_view AS SELECT * FROM arc_vset_user WHERE vu_vid IN (SELECT vset_vid FROM arc_vset) WITH CHECK OPTION; REVOKE ALL ON arc_vset_user_view FROM PUBLIC; GRANT SELECT ON arc_vset_user_view TO root; GRANT INSERT ON arc_vset_user_view TO root; GRANT DELETE ON arc_vset_user_view TO root; GRANT UPDATE ON arc_vset_user_view TO root; CREATE VIEW arc_vol_lock_view AS SELECT * FROM arc_vol_lock WHERE vlck_vid IN (SELECT vset_vid FROM arc_vset) AND (vlck_vno = 0 OR vlck_vno IN (SELECT vol_vno FROM arc_volume WHERE vol_vid = vlck_vid)) AND (vlck_rid = 0 OR vlck_rid IN (SELECT req_rid FROM arc_request)) AND vlck_pid > 0 AND vlck_exclusive IN ('Y', 'N') AND vlck_operation IN ('R', 'W', 'D') WITH CHECK OPTION; REVOKE ALL ON arc_vol_lock_view FROM PUBLIC; GRANT SELECT ON arc_vol_lock_view TO root; GRANT INSERT ON arc_vol_lock_view TO root; GRANT DELETE ON arc_vol_lock_view TO root; GRANT UPDATE ON arc_vol_lock_view TO root; CREATE VIEW arc_request_view AS SELECT * FROM arc_request WHERE req_type IN ('AR', 'BK', 'CO', 'RT', 'RM', 'RB') AND req_status IN ('NE', 'EX', 'PA', 'CA', 'FA', 'SU', 'UC') AND req_user_lang IN ('E', 'F') AND ( (req_expiry_date IS NOT NULL AND (req_type IN ('AR', 'BK', 'CO'))) OR req_expiry_date IS NULL) WITH CHECK OPTION; REVOKE ALL ON arc_request_view FROM PUBLIC; GRANT SELECT ON arc_request_view TO root; GRANT INSERT ON arc_request_view TO root; GRANT DELETE ON arc_request_view TO root; GRANT UPDATE ON arc_request_view TO root; CREATE VIEW arc_pendreq_view AS SELECT * FROM arc_pending_req WHERE pend_rid IN (SELECT req_rid FROM arc_request WHERE req_status IN ('NE', 'EX', 'PA')) AND pend_lock_pid >= 0 AND (pend_parent_rid IS NULL OR pend_parent_rid IN (SELECT req_rid FROM arc_request WHERE req_status IN ('PA', 'EX'))) WITH CHECK OPTION; REVOKE ALL ON arc_pendreq_view FROM PUBLIC; GRANT SELECT ON arc_pendreq_view TO root; GRANT INSERT ON arc_pendreq_view TO root; GRANT DELETE ON arc_pendreq_view TO root; GRANT UPDATE ON arc_pendreq_view TO root; CREATE VIEW arc_req_vset_view AS SELECT * FROM arc_req_vset WHERE rv_rid IN (SELECT req_rid FROM arc_request) AND rv_vid IN (SELECT vset_vid FROM arc_vset) WITH CHECK OPTION; REVOKE ALL ON arc_req_vset_view FROM PUBLIC; GRANT SELECT ON arc_req_vset_view TO root; GRANT INSERT ON arc_req_vset_view TO root; GRANT DELETE ON arc_req_vset_view TO root; GRANT UPDATE ON arc_req_vset_view TO root; CREATE VIEW arc_save_set_view AS SELECT * FROM arc_save_set WHERE svst_rid IN (SELECT req_rid FROM arc_request WHERE (req_type IN ('AR', 'BK'))) AND svst_vid IN (SELECT vset_vid FROM arc_vset) AND svst_complete IN ('Y', 'N') AND svst_nb_volumes >= 0 WITH CHECK OPTION; REVOKE ALL ON arc_save_set_view FROM PUBLIC; GRANT SELECT ON arc_save_set_view TO root; GRANT INSERT ON arc_save_set_view TO root; GRANT DELETE ON arc_save_set_view TO root; GRANT UPDATE ON arc_save_set_view TO root; CREATE VIEW arc_file_view AS SELECT * FROM arc_file WHERE file_type IN ('F', 'D') AND file_rid IN (SELECT req_rid FROM arc_request WHERE (req_type IN ('AR', 'BK'))) AND file_compressed IN ('Y', 'N') AND file_encrypted IN ('Y', 'N') AND ((file_dno = 0) OR (file_dno IN (SELECT dir_dno FROM arc_directory WHERE dir_rid = file_rid))) WITH CHECK OPTION; REVOKE ALL ON arc_file_view FROM PUBLIC; GRANT SELECT ON arc_file_view TO root; GRANT INSERT ON arc_file_view TO root; GRANT DELETE ON arc_file_view TO root; GRANT UPDATE ON arc_file_view TO root; CREATE VIEW arc_directory_view AS SELECT * FROM arc_directory WHERE dir_rid IN (SELECT req_rid FROM arc_request) WITH CHECK OPTION; REVOKE ALL ON arc_directory_view FROM PUBLIC; GRANT SELECT ON arc_directory_view TO root; GRANT INSERT ON arc_directory_view TO root; GRANT DELETE ON arc_directory_view TO root; GRANT UPDATE ON arc_directory_view TO root; CREATE VIEW arc_db_file_view AS SELECT * FROM arc_db_file WHERE dbf_fno = (SELECT file_fno FROM arc_file WHERE file_rid = dbf_rid AND file_fno = dbf_fno AND file_type = 'D') WITH CHECK OPTION; REVOKE ALL ON arc_db_file_view FROM PUBLIC; GRANT SELECT ON arc_db_file_view TO root; GRANT INSERT ON arc_db_file_view TO root; GRANT DELETE ON arc_db_file_view TO root; GRANT UPDATE ON arc_db_file_view TO root; CREATE VIEW arc_file_copy_view AS SELECT * FROM arc_file_copy WHERE fc_fno = (SELECT file_fno FROM arc_file WHERE file_rid = fc_rid AND file_fno = fc_fno) AND fc_vno = (SELECT vol_vno FROM arc_volume WHERE vol_vid = fc_vid AND vol_vno = fc_vno) AND fc_last_sno IN ('Y', 'N') WITH CHECK OPTION; REVOKE ALL ON arc_file_copy_view FROM PUBLIC; GRANT SELECT ON arc_file_copy_view TO root; GRANT INSERT ON arc_file_copy_view TO root; GRANT DELETE ON arc_file_copy_view TO root; GRANT UPDATE ON arc_file_copy_view TO root; CREATE VIEW arc_ae_view AS SELECT * FROM arc_archive_event WHERE ae_level IN (0, 1, 2) WITH CHECK OPTION; REVOKE ALL ON arc_ae_view FROM PUBLIC; GRANT SELECT ON arc_ae_view TO root; GRANT INSERT ON arc_ae_view TO root; GRANT DELETE ON arc_ae_view TO root; GRANT UPDATE ON arc_ae_view TO root; { Physical device table } CREATE TABLE arc_phys_dev ( dp_name CHAR(128) PRIMARY KEY, dp_path CHAR(260), { size matches FNAMELENGTH } dp_driver CHAR(5), dp_block_sz INTEGER, dp_max_space INTEGER ); REVOKE ALL ON arc_phys_dev FROM PUBLIC; GRANT ALL ON arc_phys_dev TO root; GRANT SELECT ON arc_phys_dev TO PUBLIC; { arc_replicate : replicate definition table } CREATE TABLE arc_replicate ( rep_repid INTEGER NOT NULL PRIMARY KEY, rep_name CHAR(128) NOT NULL UNIQUE, rep_dxs CHAR(255) NOT NULL, rep_db CHAR(37) NOT NULL, rep_refresh CHAR(1) NOT NULL, rep_extract CHAR(1024) NOT NULL, rep_creation_date DATETIME YEAR TO SECOND NOT NULL ); { arc_server : remote servers per replicate } CREATE TABLE arc_server ( as_server CHAR(128) NOT NULL, as_db CHAR(128) NOT NULL, as_repid INTEGER NOT NULL REFERENCES arc_replicate, PRIMARY KEY (as_server, as_db, as_repid) ); { arc_rep_archive : successful replicate extractions } CREATE TABLE arc_rep_archive ( ra_repid INTEGER NOT NULL REFERENCES arc_replicate, ra_rid INTEGER NOT NULL REFERENCES arc_request, ra_prior_rid INTEGER NOT NULL, ra_refresh CHAR (1) NOT NULL, PRIMARY KEY (ra_repid, ra_rid) ); { arc_rep_table : replicate distribution status } CREATE TABLE arc_rep_table ( rt_table CHAR(128) NOT NULL, rt_db CHAR(128) NOT NULL, rt_server CHAR(128) NOT NULL, rt_last_rid INTEGER NOT NULL, rt_active CHAR(1) NOT NULL, rt_repid INTEGER NOT NULL ); { arc_change_log : change log table mapping } { create table arc_change_log ( cl_db char(128) not null, cl_server char(128) not null, cl_table char(128) not null, cl_change_log char(128) not null, primary key (cl_db, cl_server, cl_table, cl_change_log) ); } { arc_rep_parent : parent replication distribution } CREATE TABLE arc_rep_parent ( rp_repid INTEGER NOT NULL, rp_rid INTEGER NOT NULL, rp_parent_rid INTEGER NOT NULL ); { Drop view arc_file_copy_view } DROP VIEW arc_file_copy_view; { Modification of arc_file_copy table } ALTER TABLE arc_file_copy ADD fc_device CHAR(120); { Recreate view arc_file_copy_view } CREATE VIEW arc_file_copy_view AS SELECT * FROM arc_file_copy WHERE fc_fno = (SELECT file_fno FROM arc_file WHERE file_rid = fc_rid AND file_fno = fc_fno) AND fc_vno = (SELECT vol_vno FROM arc_volume WHERE vol_vid = fc_vid AND vol_vno = fc_vno) AND fc_last_sno IN ('Y', 'N') WITH CHECK OPTION; REVOKE ALL ON arc_file_copy_view FROM PUBLIC; { Create stored procedure start_onpload } CREATE PROCEDURE informix.start_onpload(args CHAR(200)) RETURNING INT; DEFINE command CHAR(255); -- build command string here DEFINE rtnsql INT; -- place holder for exception sqlcode setting DEFINE rtnisam INT; -- isam error code. Should be onpload exit status {If $INFORMIXDIR/bin/onpload not found try /usr/informix/bin/onpload} { or NT style} ON EXCEPTION IN (-668) SET rtnsql, rtnisam IF rtnisam = -2 THEN { If onpload.exe not found by default UNIX style-environment} LET command = 'cmd /c %INFORMIXDIR%\bin\onpload ' || args; SYSTEM (command); RETURN 0; END IF IF rtnisam = -1 THEN LET command = '/usr/informix/bin/onpload ' || args; SYSTEM (command); RETURN 0; END IF RETURN rtnisam; END EXCEPTION LET command = '$INFORMIXDIR/bin/onpload ' || args; SYSTEM (command); RETURN 0; END PROCEDURE; GRANT EXECUTE ON informix.start_onpload TO PUBLIC; { Create UDR functions for memory resident tables } CREATE DBA FUNCTION informix.ifx_make_res(INTEGER) RETURNING INTEGER EXTERNAL NAME '(ifx_res_pnum)' LANGUAGE C; CREATE DBA FUNCTION informix.ifx_make_unres(INTEGER) RETURNING INTEGER EXTERNAL NAME '(ifx_unres_pnum)' LANGUAGE C; CREATE DBA FUNCTION informix.ifx_make_res(CHAR(256)) RETURNING INTEGER EXTERNAL NAME '(ifx_res_name)' LANGUAGE C; CREATE DBA FUNCTION informix.ifx_make_unres(CHAR(256)) RETURNING INTEGER EXTERNAL NAME '(ifx_unres_name)' LANGUAGE C; { Create stored procedure dbexp used by IECC } CREATE PROCEDURE informix.dbexp(args CHAR(200)) RETURNING INT; DEFINE command CHAR(255); -- build command string here DEFINE rtnsql INT; -- place holder for exception sqlcode setting DEFINE rtnisam INT; -- isam error code. Should be onpload exit status ON EXCEPTION IN (-668) SET rtnsql, rtnisam IF rtnisam = -2 THEN { If dbexport.exe not found by default NT style-environment } LET command = 'cmd /c %INFORMIXDIR%\bin\dbexport ' || args; SYSTEM (command); RETURN 0; END IF RETURN rtnisam; END EXCEPTION LET command = '$INFORMIXDIR/bin/dbexport ' || args; SYSTEM (command); RETURN 0; END PROCEDURE; GRANT EXECUTE ON informix.dbexp TO PUBLIC; { Create stored procedure dbimp used by IECC } CREATE PROCEDURE informix.dbimp(args CHAR(200)) RETURNING INT; DEFINE command CHAR(255); -- build command string here DEFINE rtnsql INT; -- place holder for exception sqlcode setting DEFINE rtnisam INT; -- isam error code. Should be onpload exit status ON EXCEPTION IN (-668) SET rtnsql, rtnisam IF rtnisam = -2 THEN { If dbimport.exe not found by default UNIX style-environment} LET command = 'cmd /c %INFORMIXDIR%\bin\dbimport ' || args; SYSTEM (command); RETURN 0; END IF RETURN rtnisam; END EXCEPTION LET command = '$INFORMIXDIR/bin/dbimport ' || args; SYSTEM (command); RETURN 0; END PROCEDURE; GRANT EXECUTE ON informix.dbimp TO PUBLIC; GRANT CONNECT TO PUBLIC; UPDATE STATISTICS; CLOSE DATABASE;