"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
Func dyn column_set.c
1. func_dyn_column_set.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "constant_definition.h"
#include "case_constant_definition.h"
#include "case_constant_sql_stmt_def.h"
#include "constant_oracle_versions.h"
extern vaciar_cadena();
char *func_dyn_column_set (int version, int sentencia)
{
static char dyn_column [MAX_VAR_SIZE];
vaciar_cadena (dyn_column,MAX_VAR_SIZE );
switch (sentencia)
{
case CASE_ORACLE_VERSION:
strcpy (dyn_column,"|ORACLE_VERSION|");
break;
case CASE_ACTIVE_PARAMETERS:
strcpy (dyn_column,"|NOMBRE|VALOR|DESCRIPCION|");
break;
case CASE_USERS_CONNECTED:
strcpy
(dyn_column,"|DIRECCION|SES|NOMBRE|CMD|ESTADO|PID|TERMINAL|LOCKWAIT|INICIADO|");
break;
case CASE_WAIT_STATISTICS:
strcpy (dyn_column,"|CANTIDAD|TIEMPO|CLASE|");
break;
case CASE_DATAFILE_I_0:
switch (version)
{
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|READPHY|READBLK|WRITPHY||WRITBLK|DATAFILE|IO_STAT|");
break;
case VERSION_ORACLE_817:
case VERSION_ORACLE_816:
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|READPHY|READBLK|WRITPHY|WRITBLK|DATAFILE|");
break;
default:
break;
}
break;
case CASE_DATAFILE_BLOCKS_R_W:
strcpy
(dyn_column,"|DATAFILE|BLKREAD|BLKWRITE|BLKTOT|");
break;
case CASE_WAIT_EVENTS:
strcpy (dyn_column,"|SID|USUARIO|CANTIDAD|EVENTO|");
break;
case CASE_INSTANCE_STATUS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|INSTNRO|INSTNAME|HOSTNAME|VERSION|INICIADO|ESTADO|PARALELO|DATAEST
A|INSTROLE|ACTSTATUS|LOG_MODE|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|INSTNAME|CREADA|ARCHIVESTATUS|CHECK_CHANGE|ARCHI_CHANGE|DATASTATE|
Página 1
2. func_dyn_column_set.c
SHUTDOWN?|INICIADA|HORA|LOG_MODE|");
break;
default:
break;
}
break;
case CASE_TEMPORAL_SPACE_BY_USER:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|SES|SERIAL|USER|EXTENTS|CONTENTS|SIZEKB");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|TBLSPACE|EXTSIZE|CURUSER|TOTEXT|TOTBLK|USEXT|USEBLK|FREEXT|FREEBLK
|MUSESIZE|MUSEBLK|MSORTSIZE|MSORTBLK|");
default:
break;
}
break;
case CASE_TOT_FREELIST_WAIT_PERCENT:
strcpy (dyn_column,"|PCTFREE|");
break;
case CASE_LAST_CHECKPOINT_TIME:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|CHEKPOINT_VALUE|FECHA|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|CHEKPOINT_VALUE|FECHA|");
break;
default:
break;
}
break;
case CASE_LIST_TABLESPACES:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX_ID|USED_KB|FREE_KB|PCT_USED|STATUS|
MANAGMENT|ALLOCTYPE|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|TBLSPACE|CONTENT|AVAILA_KB|MAX_ID|USED_KB|FREE_KB|PCT_USED|STATUS|
");
break;
}
break;
case CASE_ACTIVE_TRANSACTIONS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_USED|KB_USED|USED_UREC|SESSION|SERIAL
Página 2
3. func_dyn_column_set.c
|NOMBRE|USUARIO|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|ADDRESS|TIMESTART|ESTADO|BLK_USED|KB_USED|USED_UREC|SESSION|SERIAL
|NOMBRE|USUARIO|");
break;
}
break;
case CASE_LATCH_DETAILS:
strcpy
(dyn_column,"|GETS|MISS|HITRATIO|IMM_GETS|IMM_MISS|SLEEP|GETSPIN|ADDRESS|LATCH|N
OMBRE|");
break;
case CASE_RESOURCE_LIMITS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|NOMBRE|INIT_ALLOC|CURR_UTILIZA|MAX_UTILIZA|LIMITE|");
break;
case VERSION_ORACLE_734:
strcpy (dyn_column,"|NOMBRE|LIMITE|");
break;
}
break;
case CASE_LIST_DATAFILES:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|DATAFILE|MBYTES|ESTADO|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|DATAFILE|MBYTES|ESTADO|");
break;
}
break;
case CASE_LIST_DATAFILES_NEW_9I:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_KB|USED_KB|USED_PCT|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|ESTADO|DATAFILE|TBLSPACE|SIZE_KB|USED_KB|USED_PCT|");
break;
}
break;
case CASE_LIST_TABLESPACES_NEW_9I:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MGM|SIZE_KB|USED_KB|USED_PCT|");
break;
case VERSION_ORACLE_734:
Página 3
4. func_dyn_column_set.c
strcpy
(dyn_column,"|ESTADO|TBLSPACE|TIPO|EXTENT_MGM|SIZE_KB|USED_KB|USED_PCT|");
break;
}
break;
case CASE_ACTIVE_SESSIONS:
strcpy
(dyn_column,"|SES|SERIAL|TIPO|OS_USER|LOGON|ESTADO|PROCESO|MAQUINA|NOMBRE|PID|PR
OGRAMA|");
break;
case CASE_SESSIONS_WAITS:
strcpy
(dyn_column,"|SES|SEQ|W_T|S_W_T|USUARIO|ESTADO|EVENT|STATE|P1TEXT|P1|P1RAW|P2TEX
T|P2|P2RAW|P3TEXT|P3|P3RAW|");
break;
case CASE_DEFAULT_STORAGE_SETS_TABLESPACE:
strcpy
(dyn_column,"|TBLSPACE|INI_EXT|NEX_EXT|MIN_EXT|MAX_EXT|PCT_INC|");
break;
case CASE_ALL_TABLES_STORAGE_SETTINGS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE|BLOCKS|SIZE_KB|EXTENTS|MAX_EXT|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|OWNER_TABLE|SEG_NAME|TBLSPACE|BLOCKS|SIZE_KB|EXTENTS|MAX_EXT|");
break;
}
break;
case CASE_ALL_NON_SYS_TABLES_SETTINGS:
strcpy
(dyn_column,"|OWNER|TABLNAME|TBLSPACE|BLOCK|NROWS|BUFF_POOL|LAST_ANALIZE|SIZE_KB
");
break;
case CASE_ALL_NON_SYS_INDEXES_SETTINGS:
strcpy
(dyn_column,"|OWNER|INDEXNAME|TBLSPACE|LEAFBLK|NROROWS|BUFFPOOL|LASTANALIZ|SIZE_
KB|");
break;
case CASE_USER_DEFINED:
printf ("Pasando Seteo Columna 24 n");
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|USUARIO|ESTADO|EXPIRY DATE|DEFAULT TBLNAME|TEMP
TBLNAME|PROFILE|CREATED|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|USUARIO|ESTADO|EXPIRY DATE|DEFAULT TBLNAME|TEMP
TBLNAME|PROFILE|CREATED|");
break;
}
break;
case CASE_LIST_DATAFILE_REDO_CONTROL_FILES:
strcpy (dyn_column,"|FILENAME|TBLSPACE|ESTADO|");
break;
case CASE_LIST_DATAFILES_USED_BLOCKS:
strcpy
(dyn_column,"|TBLSPACE|FILENAME|BYTES|HIGHWATER|");
Página 4
5. func_dyn_column_set.c
break;
case CASE_LIST_SORT_BY_USER:
strcpy
(dyn_column,"|VALOR|TYPESORT|SID|OS_USER|DB_USER|");
break;
case CASE_LIST_LOCK_STATUS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ID|ID2|LOCK TYP|REQU TYP|OBJECT
TYPE|OWNER.NAME|LOCK_SID|TIME|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|ADDRESS|KADDRESS|SES|TIPO|OBJ_ID|ID2|LOCK TYP|REQU TYP|OBJECT
TYPE|OWNER.NAME|LOCK_SID|TIME|");
break;
}
break;
case CASE_LIST_USER_BY_CPU_USAGE:
strcpy
(dyn_column,"|SES|SERIAL|TYPE|OSUSER|LOGON|PROCESS|MACHINE|USER|VALUE|PROGRAM|")
;
break;
case CASE_SQL_STATEMENT_BY_THIS_USER:
strcpy (dyn_column,"|TEXT_SQL|");
break;
case CASE_REDO_LOGS_STATUS:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|MEMBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTI
ME|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|GRUPO|THREAD|SEQUENCE|BYTES|MEMBER|ARCHIVED|ESTADO|FSTCHANGE|FSTTI
ME|");
break;
}
break;
case CASE_ARCHIVED_LOGS_HISTORY:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|THREAD|SEQUEN|NAME|FSTCHANGE|FSTTIME|BLOCKS|BLKSIZE|COMPTIME|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|THREAD|SEQUEN|TIME|LOW_CHANGE|HIGH_CHANGE|NAME");
break;
}
break;
case CASE_REDO_LOG_RECOVERY_REPORT:
strcpy (dyn_column,"|GROUP|FSTCHANGE|MEMBER|SEQUENCE|");
break;
case CASE_ARCHIVE_LOG_HISTROY:
switch (version)
{
Página 5
6. func_dyn_column_set.c
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWICHANGE|FSTTIME|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|THREAD|SEQUENCE|FSTCHANGE|SWICHANGE|FSTTIME|");
break;
}
break;
case CASE_SESSION_LATCH_WAITS_SQL:
strcpy (dyn_column,"|SES|USER|STATUS|SQLTEXT|");
break;
case CASE_SESSION_PROGRAM_RUNNING_SQL:
strcpy (dyn_column,"|SES|USER|PROGRAM|SQLTEXT|");
break;
case CASE_PRIVILEGES_BY_USER:
strcpy (dyn_column,"|GRANTEE|USER|PRIVILEGE|");
break;
case CASE_DETAILED_LOCKING_CAUSES:
strcpy
(dyn_column,"|USERNAME|SID|TERMINAL|TAB|COMMAND|LMODE|REQUEST|LADDR|LOCKT|LOCKTY
PE|");
break;
case CASE_CURRENT_STATISTICS_VALUES:
strcpy (dyn_column,"|STATISTIC|NOMBRE|VALOR|");
break;
case CASE_TABLE_DESCRIPTION_USER_TABLENAME:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|TBLSPACE|OWNER|TABLENAME|NROWS|LAST
ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL|BLOCKS|FREELST|PCTFREE|INITRA
NS|MAXTRANS|FREEGRP");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|TBLSPACE|OWNER|TABLENAME|NROWS|LAST
ANALIZED|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|BUFPOL|BLOCKS|FREELST|PCTFREE|INITRA
NS|MAXTRANS|FREEGRP");
break;
}
break;
case CASE_INDEX_DESCRIPTION_USER_INDEXNAME:
switch (version)
{
case VERSION_ORACLE_816:
case VERSION_ORACLE_817:
case VERSION_ORACLE_920:
strcpy
(dyn_column,"|OWNER|IDXNAME|TABLEOWNER|TABLENAME|TBLTYPE|UNIQUE|TBLSPACE|INITRA|
MAXTRA|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|FREELIST|FRELISTGRP|PCTFREE|BLEVEL|LEA
FBLK|");
break;
case VERSION_ORACLE_734:
strcpy
(dyn_column,"|OWNER|IDXNAME|TABLEOWNER|TABLENAME|TBLTYPE|UNIQUE|TBLSPACE|INITRA|
MAXTRA|INIEXT|NEXEXT|MINEXT|MAXEXT|PCTINC|FREELIST|FRELISTGRP|PCTFREE|BLEVEL|LEA
FBLK|");
break;
}
break;
case CASE_CURRENT_ACTIVITY_REPORT:
Página 6
7. func_dyn_column_set.c
strcpy
(dyn_column,"|DIRECCION|BUF_GETS|NRO_EXEC|AVG_EXEC|SQL_TEXT|");
break;
case CASE_DICTIONARY_TABLE_COMMENTS:
strcpy (dyn_column,"|TABLE NAME|COMMENTS|");
break;
case CASE_DICTIONARY_TABLE_COLUMNS_DESCRIP:
strcpy
(dyn_column,"|TABNAME|COL_NAME|COMMENTS|SQL_TYPE|IMAGEIDX|COL_ID|STATUS|");
break;
case CASE_SGA_STATISTIC_GENERAL:
strcpy
(dyn_column,"|NUM|VALUE|ISDEFAULT|ISMODIFIED|ISADJUSTED|TYPE|ISSES_MODIFIABLE|IS
SYS_MODIFIABLE|DESCRIPTION|UPDATE_COMMENT|");
break;
case CASE_SGA_STATISTIC_MEMORY_USAGE:
strcpy
(dyn_column,"|POOL|NAME|KBYTES|USAGE_PCT|VALUE|");
break;
case CASE_SGA_STATISTIC_INFORMATION:
strcpy (dyn_column,"|NAME|VALUE_KBYTE|");
break;
case CASE_ROW_CACHE_INFORMATION:
strcpy
(dyn_column,"CACHE#|SUBORDINATE#|PARAMETER|GETS|GETMISSES|GETMISSRATIO|SCANS|SCA
NMISSES|SCANCOMPLETES|SCANMISSRATIO|COUNT|USAGE|FIXED|FLUSHES|MODIFICATIONS|");
break;
case CASE_PERFORMANCE_DISK_I_O:
strcpy (dyn_column,"|NAMES|READS|WRITES|WEIGHT|");
break;
case CASE_RECURSIVE_CALLS:
strcpy (dyn_column,"|NAME|VALUE|");
break;
case CASE_SYSTEM_EVENTS:
strcpy
(dyn_column,"|EVENT|TOTAL_WAITS|TOTAL_TIMEOUTS|TIME_WAITED|AVERAGE_WAIT|");
break;
/* -------------------------------------------------------------- */
/*
#define CASE_SQL_AREA_ALL_ENTRIES 52
*/
case CASE_SQL_AREA_ALL_ENTRIES:
strcpy
(dyn_column,"|AVGETS|SQLTEX|SHAMEM|PERMEM|RUNMEM|");
strcat
(dyn_column,"SORTS|VCO|VLO|VOP|UOP|EXECS|UEXEC|LOADS|");
strcat
(dyn_column,"FIRSTLOADTIME|INVAL|PARCALLS|DSKREADS|");
strcat (dyn_column,"BUFGETS|SQLADDR|HASHVAL|SQLHVAL|");
strcat (dyn_column,"ROWPROC|CMDTYPE|OPTMODE|PARUSER|");
strcat
(dyn_column,"PARSCHEM|KEPTVER|MOD|ACTION|SERABEND|");
break;
/*
#define CASE_SQL_AREA_CPU_USAGE 53
*/
case CASE_SQL_AREA_CPU_USAGE:
strcpy
(dyn_column,"|AVGETS|SQLTEX|SHAMEM|PERMEM|RUNMEM|");
strcat
(dyn_column,"SORTS|VCO|VLO|VOP|UOP|EXECS|UEXEC|LOADS|");
strcat
(dyn_column,"FIRSTLOADTIME|INVAL|PARCALLS|DSKREADS|");
strcat (dyn_column,"BUFGETS|SQLADDR|SQLHVAL|ROWPROC|");
strcat (dyn_column,"CMDTYPE|OPTMODE|PARUSER|PARSCHEM|");
strcat (dyn_column,"KEPTVER|MOD|ACTION|SERABEND|");
break;
Página 7