/*{ ** Name: psq_sesdump - Dump the session control block for a given session. ** ** INTERNAL PSF call format: status = psq_sesdump((PSQ_CB *) NULL, &sess_cb); ** ** EXTERNAL call format: ** status = psq_call(PSQ_SESDUMP, (PSQ_CB *) NULL, &sess_cb); ** ** Description: ** The psq_sesdump function will format and print the session control ** block for a given session. The output will go to the output terminal ** and/or file named by the user in the "SET TRACE TERMINAL" and "SET TRACE ** OUTPUT" commands. ** ** Inputs: ** psq_cb Ignored ** sess_cb Pointer to session control block to dump ** ** Outputs: ** Returns: ** E_DB_OK Function completed normally. ** E_DB_WARN Function completed with warning(s) ** E_DB_ERROR Function failed; non-catastrophic error ** E_DB_FATAL Function failed; catastrophic error ** Exceptions: ** none ** ** Side Effects: ** Writes to output file and/or terminal as specified in the "set trace ** output" and "set trace terminal" commands. ** ** History: ** 02-oct-85 (jeff) ** written ** 26-aug-85 (seputis) ** removed reference to pss_yastr ** 13-sep-90 (teresa) ** rewrote psq_sesdump to dump each flag in new field pss_flag and ** pss_ses_flag. ** 28-mar-91 (andre) ** PSS_RGSET and PSS_RASET have been undefined. ** 18-nov-93 (andre) ** added code to display new bits in pss_stmt_flags, ** pss_flattening_flags and pss_dbp_flags ** 17-dec-93 (rblumer) ** "FIPS mode" no longer exists. It was replaced some time ago by ** several feature-specific flags (e.g. flatten_nosingleton and ** direct_cursor_mode). So I removed all FIPS_MODE flags. ** 19-Nov-2010 (kiria01) SIR 124690 ** Add support for UCS_BASIC collation. */ DB_STATUS psq_sesdump( PSQ_CB *psq_cb, PSS_SESBLK *sess_cb) { DB_STATUS status; PSS_RNGTAB *rv; TRdisplay("PSF session control block:\n"); if ((status = psq_headdmp((PSQ_CBHEAD *) sess_cb)) != E_DB_OK) return (status); TRdisplay("\tpss_sessid:\t0x%x\n", sess_cb->pss_sessid); /* TRdisplay("\tpss_yastr:\t0x%x\n", sess_cb->pss_yastr); */ TRdisplay("\tpss_numcursors:\t%d\n", sess_cb->pss_numcursors); TRdisplay("\tpss_lang:\t"); if ((status = psq_lngdmp(sess_cb->pss_lang)) != E_DB_OK) return (status); TRdisplay("\n"); TRdisplay("\tpss_decimal:\t%c\n", sess_cb->pss_decimal); TRdisplay("\tpss_distrib:\t"); if ((status = psq_dstdmp(sess_cb->pss_distrib)) != E_DB_OK) return (status); /* ** dump bitflags in pss_ses_flag, which tend to persist throughout the ** session, though the values may be altered in response to user cmds */ TRdisplay("\n\tpss_ses_flag.PSS_CATUPD:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_CATUPD); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_ses_flag.PSS_WARNINGS:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_WARNINGS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_ses_flag.PSS_PROJECT:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_PROJECT); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_ses_flag.PSS_JOURNALING:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_JOURNALING); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_ses_flag.PSS_DBA_DROP_ALL:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_DBA_DROP_ALL); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_ses_flag.PSS_NOCHK_SINGLETON_CARD:\t"); status = psq_booldmp(sess_cb->pss_ses_flag & PSS_NOCHK_SINGLETON_CARD); if (status != E_DB_OK) return (status); /* dump flags found in pss_stmt_flags and pss_dbp_flags */ TRdisplay("\n\tpss_stmt_flags.PSS_AGINTREE:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_AGINTREE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_SUBINTREE:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_SUBINTREE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_TXTEMIT:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_TXTEMIT); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_QUAL_IN_PERMS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_QUAL_IN_PERMS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_QUEL_RPTQRY_TEXT:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_QUEL_RPTQRY_TEXT); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_DISREGARD_GROUP_ROLE_PERMS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_DISREGARD_GROUP_ROLE_PERMS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_SET_LOCKMODE_SESS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_SET_LOCKMODE_SESS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_REG_AS_NATIVE:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_REG_AS_NATIVE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_CP_DUMMY_COL:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_CP_DUMMY_COL); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_GATEWAY_SESS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_GATEWAY_SESS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_NEW_OBJ_NAME:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_NEW_OBJ_NAME); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_PARSING_PRIVS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_PARSING_PRIVS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_CALL_ADF_EXCEPTION:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_CALL_ADF_EXCEPTION); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_PARSING_CHECK_CONS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_PARSING_CHECK_CONS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_VALIDATING_CHECK_OPTION:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_VALIDATING_CHECK_OPTION); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_TXTEMIT2:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_TXTEMIT2); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_IMPL_COL_LIST_IN_DECL_CURS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_IMPL_COL_LIST_IN_DECL_CURS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_stmt_flags.PSS_RESOLVING_CHECK_CONS:\t"); status = psq_booldmp(sess_cb->pss_stmt_flags & PSS_RESOLVING_CHECK_CONS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_flattening_flags.PSS_SINGLETON_SUBSELECT:\t"); status = psq_booldmp(sess_cb->pss_flattening_flags & PSS_SINGLETON_SUBSELECT); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_flattening_flags.PSS_SUBSEL_IN_OR_TREE:\t"); status = psq_booldmp(sess_cb->pss_flattening_flags & PSS_SUBSEL_IN_OR_TREE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_flattening_flags.PSS_ALL_IN_TREE:\t"); status = psq_booldmp(sess_cb->pss_flattening_flags & PSS_ALL_IN_TREE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_flattening_flags.PSS_MULT_CORR_ATTRS:\t"); status = psq_booldmp(sess_cb->pss_flattening_flags & PSS_MULT_CORR_ATTRS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_flattening_flags.PSS_CORR_AGGR:\t"); status = psq_booldmp(sess_cb->pss_flattening_flags & PSS_CORR_AGGR); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_RECREATE:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_RECREATE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_IPROC:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_IPROC); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_DBPROC:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_DBPROC); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_DBPGRANT_OK:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_DBPGRANT_OK); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_0DBPGRANT_CHECK:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_0DBPGRANT_CHECK); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_RUSET:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_RUSET); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_CHECK_IF_ACTIVE:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_CHECK_IF_ACTIVE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_MISSING_PRIV:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_MISSING_PRIV); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_MISSING_OBJ:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_MISSING_OBJ); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_PARSING_SET_PARAM:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_PARSING_SET_PARAM); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SET_INPUT_PARAM:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SET_INPUT_PARAM); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SYSTEM_GENERATED:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SYSTEM_GENERATED); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_NOT_DROPPABLE:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_NOT_DROPPABLE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SUPPORTS_CONS:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SUPPORTS_CONS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_CHECK_IF_ACTIVE:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_CHECK_IF_ACTIVE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_MISSING_PRIV:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_MISSING_PRIV); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_MISSING_OBJ:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_MISSING_OBJ); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_PARSING_SET_PARAM:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_PARSING_SET_PARAM); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SET_INPUT_PARAM:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SET_INPUT_PARAM); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SYSTEM_GENERATED:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SYSTEM_GENERATED); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_NOT_DROPPABLE:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_NOT_DROPPABLE); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_dbp_flags.PSS_SUPPORTS_CONS:\t"); status = psq_booldmp(sess_cb->pss_dbp_flags & PSS_SUPPORTS_CONS); if (status != E_DB_OK) return (status); TRdisplay("\n\tpss_qbuf:\t0x%p\n", sess_cb->pss_qbuf); TRdisplay("\tpss_nxtchar:\t0x%p\n", sess_cb->pss_nxtchar); TRdisplay("\tpss_prvtok:\t0x%p\n", sess_cb->pss_prvtok); TRdisplay("\tpss_endbuf:\t0x%p\n", sess_cb->pss_endbuf); TRdisplay("\tpss_lineno:\t%d\n", sess_cb->pss_lineno); TRdisplay("\tpss_qualdepth:\t%d\n", sess_cb->pss_qualdepth); TRdisplay("\tpss_symstr:\t0x%p\n", sess_cb->pss_symstr); TRdisplay("\tpss_symtab:\t0x%p\n", sess_cb->pss_symtab); TRdisplay("\tpss_symnext:\t0x%p\n", sess_cb->pss_symnext); TRdisplay("\tpss_symblk:\t0x%p\n", sess_cb->pss_symblk); /* ** To dump pss_restab call pst_dmpres(). */ (VOID) pst_dmpres(&sess_cb->pss_restab); TRdisplay("\tpss_yacc:\t0x%p\n", sess_cb->pss_yacc); TRdisplay("\tpss_parser:\t0x%p\n", sess_cb->pss_parser); TRdisplay("\tpss_defqry:\t%d\n", sess_cb->pss_defqry); TRdisplay("\tpss_rsdmno:\t%d\n", sess_cb->pss_rsdmno); TRdisplay("\tpss_ostream:\t0x%p\n", &sess_cb->pss_ostream); TRdisplay("\tpss_tlist:\t0x%p\n", sess_cb->pss_tlist); TRdisplay("\tpss_dbid:\t0x%p\n", sess_cb->pss_dbid); TRdisplay("\tpss_crsr:\t0x%p\n", sess_cb->pss_crsr); TRdisplay("\tpss_highparm:\t%d\n", sess_cb->pss_highparm); TRdisplay("\tpss_memleft:\t%d\n", sess_cb->pss_memleft); TRdisplay("\tpss_user:\t%#s\n", sizeof (sess_cb->pss_user), &sess_cb->pss_user); TRdisplay("\tpss_dba:\t%#s\n", sizeof (sess_cb->pss_dba), &sess_cb->pss_dba); TRdisplay("\tpss_cstream:\t0x%p\n", sess_cb->pss_cstream); TRdisplay("\tpss_def_coll:\t%d\n", sess_cb->pss_def_coll); TRdisplay("\tpss_def_unicode_coll:\t%d\n", sess_cb->pss_def_unicode_coll); TRdisplay("\tpss_resrng:\n"); psq_rngdmp(sess_cb->pss_resrng); TRdisplay("\n"); TRdisplay("\tpss_usrrange:\n"); for (rv = (PSS_RNGTAB *) sess_cb->pss_usrrange.pss_qhead.q_next; (QUEUE *) rv != &sess_cb->pss_usrrange.pss_qhead; rv = (PSS_RNGTAB *) rv->pss_rngque.q_next) { psq_rngdmp(rv); TRdisplay("\n"); } return (E_DB_OK); }
/*{ ** Name: psq_prmdump - Dump the parameters in a control block. ** ** INTERNAL PSF call format: status = psq_prmdump(&psq_cb) ** ** EXTERNAL call format: status = psq_call(PSQ_PRMDUMP, &psq_cb, NULL); ** ** Description: ** The psq_prmdump function formats and prints the given control block. ** The output will go to the output terminal and/or file named by the ** user in the "SET TRACE TERMINAL" and "SET TRACE OUTPUT" commands. ** ** Inputs: ** psq_cb Everything in the control block gets ** printed. ** sess_cb Ignored. ** ** Outputs: ** NONE Nothing in the control block will be ** altered by this command, even if there ** is an error. ** Returns: ** E_DB_OK Function completed normally. ** E_DB_WARN Function completed with warning(s) ** E_DB_ERROR Function failed; non-catastrophic error ** E_DB_FATAL Function failed; catastrophic error ** Exceptions: ** none ** ** Side Effects: ** Sends output to terminal and/or log file ** ** History: ** 02-oct-85 (jeff) ** written ** 13-sep-90 (teresa) ** changed to dump PSQ_FLAG fields. Flag pqs_force has changed to ** be a bitflag instead of a boolean. Also, many new flags have been ** added and some of those are in psq_flag. Now all psq_flag bits ** will be dumped. ** 08-sep-93 (swm) ** Changed cast of session id parameter to psq_siddmp() function ** to CS_SID. ** 17-dec-93 (rblumer) ** "FIPS mode" no longer exists. It was replaced some time ago by ** several feature-specific flags (e.g. flatten_nosingleton and ** direct_cursor_mode). So I removed all FIPS_MODE flags. ** 11-oct-1993 (tad) ** Bug #56449 ** Changed %x to %p for pointer values. */ DB_STATUS psq_prmdump( register PSQ_CB *psq_cb) { DB_STATUS status; if (TRdisplay("Contents of PSQ_CB at 0x%p:\n", psq_cb) != TR_OK) return (E_DB_ERROR); /* Print common header for all cb's */ if ((status = psq_headdmp((PSQ_CBHEAD *) psq_cb)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_sessid:\t") != TR_OK) return (E_DB_ERROR); /* Print session id */ if ((status = psq_siddmp((CS_SID *) &psq_cb->psq_sessid)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_qlang:\t") != TR_OK) return (E_DB_ERROR); /* Print query language id */ if ((status = psq_lngdmp(psq_cb->psq_qlang)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_decimal:\t") != TR_OK) return (E_DB_ERROR); /* Print decimal specification */ if ((status = psq_decdmp(&psq_cb->psq_decimal)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_distrib:\t") != TR_OK) return (E_DB_ERROR); /* Print distributed specifier */ if ((status = psq_dstdmp(psq_cb->psq_distrib)) != E_DB_OK) return (status); /* display bitflags in psq_flags */ if (TRdisplay("\n\tpsq_flag.PSQ_FORCE:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_FORCE)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_IIQRYTEXT:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_IIQRYTEXT)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_ALIAS_SET:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_ALIAS_SET)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_CATUPD:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_CATUPD)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_WARNINGS:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_WARNINGS)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_ALLDELUPD:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_ALLDELUPD)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_flag.PSQ_DBA_DROP_ALL:\t") != TR_OK) return (E_DB_ERROR); if ((status = psq_booldmp(psq_cb->psq_flag & PSQ_DBA_DROP_ALL)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_version:\t%d", psq_cb->psq_version) != TR_OK) return (E_DB_ERROR); if (TRdisplay("\n\tpsq_mode:\t") != TR_OK) return (E_DB_ERROR); /* Print the query mode */ if ((status = psq_modedmp(psq_cb->psq_mode)) != E_DB_OK) return (status); /* ** if (TRdisplay("\n\tpsq_qryid:\t") != TR_OK) ** return (E_DB_ERROR); ** {Print the query id} ** if ((status = psq_qiddmp(&psq_cb->psq_qryid)) != E_DB_OK) ** return (status); ** */ if (TRdisplay("\n\tpsq_table:\t") != TR_OK) return (E_DB_ERROR); /* Print the id of the given table */ if ((status = psq_tbiddmp(&psq_cb->psq_table)) != E_DB_OK) return (status); if (TRdisplay("\n\tpsq_cursid:\t") != TR_OK) return (E_DB_ERROR); /* Print the cursor id */ if ((status = psq_ciddmp(&psq_cb->psq_cursid)) != E_DB_OK) return (status); /* ** if (TRdisplay("\n\tpsq_result:\t") != TR_OK) ** return (E_DB_ERROR); ** {Print the id for the parse result } ** if ((status = psq_qiddmp(&psq_cb->psq_result)) != E_DB_OK) ** return (status); ** */ if (TRdisplay("\n\tpsq_error:\t:") != TR_OK) return (E_DB_ERROR); /* Print the error block */ if ((status = psq_errdmp(&psq_cb->psq_error)) != E_DB_OK) return (status); return (E_DB_OK); }