/* -*-C++-*- */
/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
#ifndef COMSMALLDEFS_H
#define COMSMALLDEFS_H
/* -*-C++-*-
 *****************************************************************************
 *
 * File:         ComSmallDefs.h
 * Description:  Small definitions are declared here that are used throughout
 *               the SQL/ARK product.
 *
 *
 * Created:      10/27/95
 * Language:     C++
 *
 *
 *
 *****************************************************************************
 */


#include <iosfwd>
using namespace std;

#include <stdio.h>
#include "NAAssert.h"   // required after including a RogueWave file!
#include "NABoolean.h"
#include "NAString.h"
#include "Int64.h"
#include "dfs2rec.h"

#ifndef NULL
#define NULL 0
#endif

// A better, fuller Int64 implementation has been developed in Int64
// replace the old ComSInt64 here.  Both will be replaced by long long
// when we have a modern C compiler
#define ComSInt64 Int64

typedef unsigned short          ComUInt16;
typedef          short          ComSInt16;
typedef         UInt32          ComUInt32;
typedef          Int32          ComSInt32;

// ++ MV
#define MAX_COMSINT32 2147483647
#define MAX_NEG_COMSINT32 -2147483648
#define UINT32_MAX_LENGTH 12
// -- MV

// max precision supported by system hardware. Signed NUMERICs upto this
// range are declared as INT64 (largeint).
#define MAX_HARDWARE_SUPPORTED_SIGNED_NUMERIC_PRECISION 18

//Unsigned NUMERICs upto this range are supported by hardware.
#define MAX_HARDWARE_SUPPORTED_UNSIGNED_NUMERIC_PRECISION 20

typedef NAString                ComString;

typedef ComSInt64               ComTimestamp;

typedef Int32			ComUserID;

typedef NABoolean               ComBoolean;

// user and role definitions have been moved to NAUserId.h

// Defaults for system attributes
#define SMD_LOCATION  "$SYSTEM"
#define SMD_VERSION   "1000"

#define COM_VOLATILE_SCHEMA_PREFIX "VOLATILE_SCHEMA_"

// prefix of temp tables for common subexpressions
#define COM_CSE_TABLE_PREFIX "CSE_TEMP_"

// 'reserved' tables in public_access_schema for sql internal use
#define COM_PUBLIC_ACCESS_SCHEMA "PUBLIC_ACCESS_SCHEMA"

#define HIVE_SYSTEM_CATALOG          "HIVE"
#define HIVE_SYSTEM_CATALOG_LC       "hive"
#define HIVE_SYSTEM_SCHEMA           "HIVE"
#define HIVE_SYSTEM_SCHEMA_LC        "hive"

// default schema name to be passed to hive methods at runtime
#define HIVE_DEFAULT_SCHEMA_EXE      "default"

#define HIVE_STATS_CATALOG           "TRAFODION"
#define HIVE_STATS_SCHEMA            "\"_HIVESTATS_\""
#define HIVE_STATS_SCHEMA_NO_QUOTES  "_HIVESTATS_"
#define HIVE_EXT_SCHEMA_PREFIX       "_HV_"
#define HBASE_EXT_MAP_SCHEMA         "_HB_MAP_"

#define HBASE_SYSTEM_CATALOG          "HBASE"
#define HBASE_SYSTEM_SCHEMA           "HBASE"
#define HBASE_CELL_SCHEMA             "_CELL_"
#define HBASE_ROW_SCHEMA              "_ROW_"
#define HBASE_MAP_SCHEMA              "_MAP_"
#define HBASE_HIST_NAME               "SB_HISTOGRAMS"
#define HBASE_HISTINT_NAME            "SB_HISTOGRAM_INTERVALS"
#define HBASE_PERS_SAMP_NAME          "SB_PERSISTENT_SAMPLES"
#define HBASE_HIST_PK                    "SB_HISTOGRAMS_PK"
#define HBASE_HISTINT_PK               "SB_HISTOGRAM_INTERVALS_PK"
#define HBASE_PERS_SAMP_PK            "SB_PERSISTENT_SAMPLES_PK"
#define HBASE_EXT_SCHEMA_PREFIX       "_HB_"

#define HBASE_STATS_CATALOG          "TRAFODION"
#define HBASE_STATS_SCHEMA           "\"_HBASESTATS_\""
#define HBASE_STATS_SCHEMA_NO_QUOTES "_HBASESTATS_"

// default null format for data in hive files.
#define HIVE_DEFAULT_NULL_STRING             "\\N"

#define TRAFODION_SYSCAT_LIT              "TRAFODION"
#define SEABASE_SYSTEM_SCHEMA           "SEABASE"
#define SEABASE_OLD_PRIVMGR_SCHEMA         "PRIVMGR_MD"
#define SEABASE_PRIVMGR_SCHEMA         "_PRIVMGR_MD_"
#define SEABASE_UDF_SCHEMA             "_UDF_"
#define TRAF_SAMPLE_PREFIX             "TRAF_SAMPLE_"  // prefix for a sample table used by update stats
#define LOB_MD_PREFIX                  "LOBMD_"
#define LOB_DESC_CHUNK_PREFIX          "LOBDescChunks_"
#define LOB_DESC_HANDLE_PREFIX         "LOBDescHandle_"
#define SEABASE_DEFAULT_COL_FAMILY "#1"

// reserved names for seabase metadata where SQL table information is kept
// there are places in the code that assume metadata schema and table 
// names are less than 100 characters.  If you create a name that is 
// bigger than this, be sure to changes places like GET cidd
#define SEABASE_MD_SCHEMA     "_MD_"
#define SEABASE_COLUMNS         "COLUMNS"
#define SEABASE_DEFAULTS        "DEFAULTS"
#define SEABASE_INDEXES          "INDEXES"
#define SEABASE_KEYS                "KEYS"
#define SEABASE_LIBRARIES         "LIBRARIES"
#define SEABASE_LIBRARIES_USAGE   "LIBRARIES_USAGE"
#define SEABASE_OBJECTS          "OBJECTS"
#define SEABASE_OBJECTS_UNIQ_IDX "OBJECTS_UNIQ_IDX"
#define SEABASE_OBJECTUID      "OBJECTUID"
#define SEABASE_REF_CONSTRAINTS "REF_CONSTRAINTS"
#define SEABASE_ROUTINES          "ROUTINES"
#define SEABASE_SEQ_GEN          "SEQ_GEN"
#define SEABASE_TABLES            "TABLES"
#define SEABASE_TABLE_CONSTRAINTS "TABLE_CONSTRAINTS"
#define SEABASE_TABLE_CONSTRAINTS_IDX "TABLE_CONSTRAINTS_IDX"
#define SEABASE_TEXT            "TEXT"
#define SEABASE_UNIQUE_REF_CONSTR_USAGE "UNIQUE_REF_CONSTR_USAGE"
#define SEABASE_VIEWS              "VIEWS"
#define SEABASE_VIEWS_USAGE  "VIEWS_USAGE"
#define SEABASE_VERSIONS        "VERSIONS"
#define SEABASE_AUTHS            "AUTHS"
#define SEABASE_VALIDATE_SPJ      "VALIDATEROUTINE"
#define SEABASE_VALIDATE_LIBRARY  "UDR_LIBRARY"

#define SEABASE_SCHEMA_OBJECTNAME "__SCHEMA__" 

#define SEABASE_SEQ_GEN  "SEQ_GEN"

// DTM log files are created in this schema. It is a reserved schema.
#define SEABASE_DTM_SCHEMA     "_DTM_"

// Trafodion statistics repository reserved schema
#define SEABASE_REPOS_SCHEMA  "_REPOS_"
#define REPOS_METRIC_QUERY_AGGR_TABLE "METRIC_QUERY_AGGR_TABLE"
#define REPOS_METRIC_QUERY_TABLE "METRIC_QUERY_TABLE"
#define REPOS_METRIC_SESSION_TABLE "METRIC_SESSION_TABLE"
#define REPOS_METRIC_TEXT_TABLE  "METRIC_TEXT_TABLE"

#define SEABASE_REGRESS_DEFAULT_SCHEMA "SCH"

// Trafodion system library and procedures reserved schema
// Procedures are defined in CmpSeabaseDDLroutine.h
#define SEABASE_LIBMGR_SCHEMA "_LIBMGR_"
#define SEABASE_LIBMGR_LIBRARY "DB__LIBMGRNAME"
#define SEABASE_LIBMGR_LIBRARY_CPP "DB__LIBMGR_LIB_CPP"

// reserved column names for traf internal system usage
#define TRAF_SALT_COLNAME "_SALT_"
#define TRAF_DIVISION_COLNAME_PREFIX "_DIVISION_"
#define TRAF_SYSKEY_COLNAME "SYSKEY"

// length of explain_plan column in metric_query_table.
// explain_plan greater than this length are chunked and store in multiple
// rows in metric_text_table
// Note: This symbol is used in the DDL for the Repository tables.
// If you change it, consider whether the Repository tables will need
// an upgrade. See file sqlcomp/CmpSeabaseDDLrepos.h.
#define REPOS_MAX_EXPLAIN_PLAN_LEN 1000000
#define REPOS_MAX_EXPLAIN_PLAN_LEN_STR "1000000"

/******    *****/
enum ComActivationTime { COM_UNKNOWN_TIME, COM_BEFORE , COM_AFTER };
#define COM_BEFORE_LIT         "B "
#define COM_AFTER_LIT          "A "
#define COM_UNKNOWN_TIME_LIT "  "

enum ComOperation{COM_UNKNOWN_IUD, COM_INSERT, COM_DELETE, COM_UPDATE,
                  COM_SELECT, COM_ROUTINE};
#define COM_INSERT_LIT       "I "
#define COM_DELETE_LIT       "D "
#define COM_UPDATE_LIT       "U "
#define COM_SELECT_LIT       "S "
#define COM_ROUTINE_LIT      "R "
#define COM_UNKNOWN_IUD_LIT  "  "

enum ComGranularity { COM_UNKNOWN_GRANULARITY, COM_ROW, COM_STATEMENT };
#define COM_ROW_LIT                  "R "
#define COM_STATEMENT_LIT            "S "
#define COM_UNKNOWN_GRANULARITY_LIT  "  "

enum ComYesNo { COM_YES, COM_NO, COM_NULL };
#define COM_YES_LIT       "Y "
#define COM_NO_LIT        "N "
#define COM_NULL_LIT      "  "


//----------------------------------------------------------------------------
//++ MVS
enum ComMVType {  COM_MJV
                 ,COM_MAV
                 ,COM_MAJV
                 ,COM_MV_OTHER
                 ,COM_MV_UNKNOWN
        };

#define COM_MJV_LIT         "J "
#define COM_MAV_LIT         "A "
#define COM_MAJV_LIT        "X "
#define COM_MV_OTHER_LIT    "O "
#define COM_MV_UNKNOWN_LIT  "  "


enum ComMVStatus {  COM_MVSTATUS_INITIALIZED
                   ,COM_MVSTATUS_NOT_INITIALIZED
                   ,COM_MVSTATUS_NO_INITIALIZATION
                   ,COM_MVSTATUS_UNAVAILABLE
                   ,COM_MVSTATUS_UNKNOWN
                 };

#define COM_MVSTATUS_INITIALIZED_LIT        "Y "
#define COM_MVSTATUS_NOT_INITIALIZED_LIT    "N "
#define COM_MVSTATUS_NO_INITIALIZATION_LIT  "I "
#define COM_MVSTATUS_UNAVAILABLE_LIT        "U "
#define COM_MVSTATUS_UNKNOWN_LIT            "  "


enum ComMvAuditType {  COM_MV_AUDIT
                      ,COM_MV_NO_AUDIT
                      ,COM_MV_NO_AUDIT_ON_REFRESH
                      ,COM_MV_AUDIT_UNKNOWN
                    };

#define COM_MV_AUDIT_LIT                "A "
#define COM_MV_NO_AUDIT_LIT             "N "
#define COM_MV_NO_AUDIT_ON_REFRESH_LIT  "R "
#define COM_MV_AUDIT_UNKNOWN_LIT        "  "

enum ComMVAttribute { COM_MVATTRIBUTE_UNKNOWN }; // For future use

#define COM_MV_ATTRIBUTE_UNKNOWN_LIT  "    "


enum ComMVRefreshType {  COM_ON_STATEMENT
                        ,COM_ON_REQUEST
                        ,COM_RECOMPUTE
                        ,COM_BY_USER
                        ,COM_UNKNOWN_RTYPE
                      };

#define COM_ON_STATEMENT_LIT    "S "
#define COM_ON_REQUEST_LIT      "R "
#define COM_RECOMPUTE_LIT       "C "
#define COM_BY_USER_LIT         "U "
#define COM_UNKNOWN_RTYPE_LIT   "  "


enum ComMVSUsedTableAttribute {  COM_NO_ATTRIBUTE
                                ,COM_IGNORE_CHANGES
                                ,COM_INSERT_ONLY
                              };

#define COM_NO_ATTRIBUTE_LIT    "NO"
#define COM_IGNORE_CHANGES_LIT  "IC"
#define COM_INSERT_ONLY_LIT     "IO"


enum ComMVSUsageType {  COM_USER_SPECIFIED
                       ,COM_DIRECT_USAGE
                       ,COM_EXPANDED_USAGE
                       ,COM_UNKNOWN_USAGE
                     };

#define COM_USER_SPECIFIED_LIT  "U "
#define COM_DIRECT_USAGE_LIT    "D "
#define COM_EXPANDED_USAGE_LIT  "E "
#define COM_UNKNOWN_USAGE_LIT   "  "


enum ComLeftJoinTableType {  COM_NO_LEFT_JOIN
                            ,COM_LEFT_INNER
                            ,COM_LEFT_OUTER
                            ,COM_LEFT_JOIN_UNKNOWN
                          };

#define COM_NO_LEFT_JOIN_LIT        "N "
#define COM_LEFT_INNER_LIT          "I "
#define COM_LEFT_OUTER_LIT          "O "
#define COM_LEFT_JOIN_UNKNOWN_LIT   "  "



enum ComMVColType {  COM_MVCOL_GROUPBY
                    ,COM_MVCOL_CONST
                    ,COM_MVCOL_AGGREGATE
                    ,COM_MVCOL_DUPLICATE
                    ,COM_MVCOL_OTHER
                    ,COM_MVCOL_FUNCTION
                    ,COM_MVCOL_BASECOL
                    ,COM_MVCOL_REDUNDANT
                    ,COM_MVCOL_COMPLEX
                    ,COM_MVCOL_UNKNOWN
                  };

#define   COM_MVCOL_GROUPBY_LIT   "GRP "
#define   COM_MVCOL_CONST_LIT     "CNS "
#define   COM_MVCOL_AGGREGATE_LIT "AGG "
#define   COM_MVCOL_DUPLICATE_LIT "DUP "
#define   COM_MVCOL_REDUNDANT_LIT "RED "
#define   COM_MVCOL_COMPLEX_LIT   "CPX "
#define   COM_MVCOL_OTHER_LIT     "OTH "
#define   COM_MVCOL_FUNCTION_LIT  "FUN "
#define   COM_MVCOL_BASECOL_LIT   "BAS "
#define   COM_MVCOL_UNKNOWN_LIT   "    "

// For the operator types (the types (ITM_...) are taken from OperTypeEnum)
#define   COM_COUNT_LIT          "CNT "
#define   COM_COUNT_NONULL_LIT   "CTN "
#define   COM_SUM_LIT            "SUM "
#define   COM_AVG_LIT            "AVG "
#define   COM_MIN_LIT            "MIN "
#define   COM_MAX_LIT            "MAX "
#define   COM_VARIANCE_LIT       "VAR "
#define   COM_STDDEV_LIT         "STD "
#define   COM_BASECOL_LIT        "BCL "
#define   COM_UNKNOWN_AGG_LIT    "    "


enum ComMVIncRefStatus { COM_REF_STAT_UNKNOWN
                        ,COM_REF_STAT_OK
                        ,COM_REF_STAT_RECOMPUTE_REQUIRED
                        ,COM_REF_STAT_LOCK_REQUIRED
                       };

#define COM_REF_STAT_OK_LIT                 "OK"
#define COM_REF_STAT_RECOMPUTE_REQUIRED_LIT "RR"
#define COM_REF_STAT_LOCK_REQUIRED_LIT      "LR"
#define COM_REF_STAT_UNKNOWN_LIT            "  "


enum ComRangeLogType {  COM_NO_RANGELOG
                       ,COM_MANUAL_RANGELOG
                       ,COM_AUTO_RANGELOG
                       ,COM_MIXED_RANGELOG
                       ,COM_RANGELOG_UNKNOWN
                     };

#define COM_NO_RANGELOG_LIT         "N "
#define COM_MANUAL_RANGELOG_LIT     "M "
#define COM_AUTO_RANGELOG_LIT       "A "
#define COM_MIXED_RANGELOG_LIT      "X "
#define COM_RANGELOG_UNKNOWN_LIT    "  "


enum ComMvsAllowed {  COM_NO_MVS_ALLOWED
                     ,COM_ALL_MVS_ALLOWED
                     ,COM_ON_STATEMENT_MVS_ALLOWED
                     ,COM_ON_REQUEST_MVS_ALLOWED
                     ,COM_RECOMPUTE_MVS_ALLOWED
                     ,COM_MVS_ALLOWED_UNKNOWN
                   };

#define COM_NO_MVS_ALLOWED_LIT              "N "
#define COM_ALL_MVS_ALLOWED_LIT             "A "
#define COM_ON_STATEMENT_MVS_ALLOWED_LIT    "S "
#define COM_ON_REQUEST_MVS_ALLOWED_LIT      "R "
#define COM_RECOMPUTE_MVS_ALLOWED_LIT       "C "
#define COM_MVS_ALLOWED_UNKNOWN_LIT         "  "


// This enum marks the type of table that should be created by
// /catman/CatExecCreateTable  .  I guess that TransientObject
// could also be an option here.
enum ComTableType {  COM_REGULAR_TABLE
                    ,COM_TRIGTEMP_TABLE
                    ,COM_IUD_LOG_TABLE
                    ,COM_RANGE_LOG_TABLE
                    ,COM_MVS_UMD
                    ,COM_MV_TABLE
                    ,COM_EXCEPTION_TABLE
                    ,COM_INDEX_TABLE // added for parallel create/drop
                    ,COM_GHOST_REGULAR_TABLE
                    ,COM_GHOST_MV_TABLE
                    ,COM_GHOST_INDEX_TABLE
                    ,COM_GHOST_IUD_LOG_TABLE
                    ,COM_SG_TABLE
                    ,COM_SCHEMA_LABEL_TABLE
                  };

#define COM_REGULAR_TABLE_LIT       "RT"
#define COM_TRIGTEMP_TABLE_LIT      "TT"
#define COM_IUD_LOG_TABLE_LIT       "IU"
#define COM_RANGE_LOG_TABLE_LIT     "RL"
#define COM_MVS_UMD_LIT             "UM"
#define COM_MV_TABLE_LIT            "MV"
#define COM_EXCEPTION_TABLE_LIT     "ET"
#define COM_INDEX_TABLE_LIT         "IT" // added for parallel create/drop
#define COM_GHOST_REGULAR_TABLE_LIT "GR"
#define COM_GHOST_MV_TABLE_LIT      "GM"
#define COM_GHOST_INDEX_TABLE_LIT   "GI"
#define COM_GHOST_IUD_LOG_TABLE_LIT "GU"
#define COM_SG_TABLE_LIT            "SG"
#define COM_SCHEMA_LABEL_TABLE_LIT  "SL"


#define EPOCH_INITIAL_VALUE 100

// JulianTimestamp time of UNIX "epoch", 00:00:00 Jan 1, 1970
const Int64 COM_EPOCH_TIMESTAMP=210866760000000000LL;

// enums used to specify the MV REWRITE PUBLISH operations
// and SYSTEM DEFAULTS propagation
enum ComPublishMVOperationType { COM_PUBLISH_MV_CREATE,
                                 COM_PUBLISH_MV_CREATE_AND_REFRESH,
                                 COM_PUBLISH_MV_DROP,
                                 COM_PUBLISH_MV_REFRESH,
                                 COM_PUBLISH_MV_REFRESH_RECOMPUTE,
                                 COM_PUBLISH_MV_RENAME,
                                 COM_PUBLISH_MV_ALTER_IGNORE_CHANGES,
                                 COM_PUBLISH_MV_TOUCH,
                                 COM_PUBLISH_MV_REPUBLISH,
                                 COM_PUBLISH_MV_DEFAULT,
                                 COM_PUBLISH_MV_UNKNOWN
                               };



#define COM_PUBLISH_MV_CREATE_LIT                       "CT"
#define COM_PUBLISH_MV_CREATE_AND_REFRESH_LIT           "CR"
#define COM_PUBLISH_MV_DROP_LIT                         "DP"
#define COM_PUBLISH_MV_REFRESH_LIT                      "RF"
#define COM_PUBLISH_MV_REFRESH_RECOMPUTE_LIT            "RR"
#define COM_PUBLISH_MV_RENAME_LIT                       "MR"
#define COM_PUBLISH_MV_ALTER_IGNORE_CHANGES_LIT         "AI"
#define COM_PUBLISH_MV_REPUBLISH_LIT                    "RP"
#define COM_PUBLISH_MV_TOUCH_LIT                        "MT"
#define COM_PUBLISH_MV_UNKNOWN_LIT                      "  "


//-- MVS
//----------------------------------------------------------------------------
// -- Histograms

enum ComHistReasonType {  COM_HIST_NOT_CREATED
                         ,COM_HIST_MANUAL
                         ,COM_HIST_INITIAL
                         ,COM_HIST_AUTO_REGEN_NEEDED
                       };

#define COM_HIST_NOT_CREATED_LIT         " "
#define COM_HIST_MANUAL_LIT              "M"
#define COM_HIST_INITIAL_LIT             "I"
#define COM_HIST_AUTO_REGEN_NEEDED_LIT   "N"


//-- Histograms
//---------------------------------------------------------------------------
//----------------------------------------------------------------------------

// NOTE: the following literals get generated into plans, don't change them
// (adding new ones is ok)
//
// COM_SQL_MP_NAME, COM_SQL_MP_USER_TABLE_NAME, COM_SQL_MP_SYSTEM_TABLE_NAME,
// COM_SQL_MP_INDEX_NAME, COM_SQL_MP_PVIEW_NAME, COM_SQL_MP_SVIEW_NAME and
// the corresponding literals ie. COM_SQL_MP_NAME_LIT,
// COM_SQL_MP_USER_TABLE_NAME_LIT, ... are not actually used even though
// w:\smdio\CmUtil.cpp refers to these variables.
//
// In Release 2, MP alias resides in the table name space.

// COM_UDR_NAME is not used as name space for procedure.  Valid name space
// value is COM_TABLE_NAME, TA.  However, COM_UDR_NAME is referenced by
// sqlparser.y, CmpDescribe.cpp for showddl procedure work.  It is also
// referenced by to properly report error in case users has not fixed up their
// database and still have UR name space value in the Objects table for
// procedures/routines.

enum ComAnsiNameSpace { COM_UNKNOWN_NAME              =  0
                      , COM_CONSTRAINT_NAME           =  1
                      , COM_INDEX_NAME                =  2
                      , COM_MODULE_NAME               =  3
                      , COM_TABLE_NAME                =  4
                      , COM_SQL_MP_NAME               =  5
                      , COM_LOCK_NAME                 =  6
                      , COM_SQL_MP_USER_TABLE_NAME    =  7
                      , COM_SQL_MP_SYSTEM_TABLE_NAME  =  8
                      , COM_SQL_MP_INDEX_NAME         =  9
                      , COM_SQL_MP_PVIEW_NAME         = 10
                      , COM_SQL_MP_SVIEW_NAME         = 11
                      , COM_TRIGTEMP_TABLE_NAME       = 12
                      , COM_TRIGGER_NAME              = 13
                      , COM_IUD_LOG_TABLE_NAME        = 14
                      , COM_RANGE_LOG_TABLE_NAME      = 15
                      , COM_MVRG_NAME                 = 16
                      , COM_UDR_NAME                  = 17
                      , COM_LOB_TABLE_NAME            = 18
                      , COM_SCHEMA_LABEL_NAME         = 19
                      , COM_EXCEPTION_TABLE_NAME      = 20
                      , COM_GHOST_TABLE_NAME          = 21
                      , COM_GHOST_INDEX_NAME          = 22
                      , COM_GHOST_IUD_LOG_TABLE_NAME  = 23
                      , COM_SEQUENCE_GENERATOR_NAME   = 24
                      , COM_UDF_NAME                  = 25
                      , COM_UUDF_ACTION_NAME          = 26
                      , COM_LIBRARY_NAME              = 27
                      };

#define COM_NAME_LIT_LEN                        2
#define COM_UNKNOWN_NAME_LIT                    "  "
#define COM_CONSTRAINT_NAME_LIT                 "CN"
#define COM_INDEX_NAME_LIT                      "IX"
#define COM_IUD_LOG_TABLE_NAME_LIT              "IL"  // MV
#define COM_RANGE_LOG_TABLE_NAME_LIT            "RL"
#define COM_MVRG_NAME_LIT                       "RG"   // OZ
#define COM_TRIGGER_NAME_LIT                    "TR"
#define COM_MODULE_NAME_LIT                     "MD"
#define COM_TABLE_NAME_LIT                      "TA"
#define COM_TRIGTEMP_TABLE_NAME_LIT             "TT"
#define COM_UDR_NAME_LIT                        "UR"
#define COM_LOB_TABLE_NAME_LIT                  "LO"
#define COM_SCHEMA_LABEL_NAME_LIT               "SL"
#define COM_EXCEPTION_TABLE_NAME_LIT            "EX"
#define COM_GHOST_TABLE_NAME_LIT                "GT"
#define COM_GHOST_INDEX_NAME_LIT                "GI"
#define COM_GHOST_IUD_LOG_TABLE_NAME_LIT        "GG"
#define COM_SEQUENCE_GENERATOR_NAME_LIT         "SG"
#define COM_UDF_NAME_LIT                        "UF"
#define COM_UUDF_ACTION_NAME_LIT                "AC"
#define COM_LIBRARY_NAME_LIT                    "LB"

// These are not used even though smdio\CmUtil.cpp references them.
// They are put here as place holders.
#define COM_SQL_MP_NAME_LIT                     "  "
#define COM_SQL_MP_USER_TABLE_NAME_LIT          "  "
#define COM_SQL_MP_SYSTEM_TABLE_NAME_LIT        "  "
#define COM_SQL_MP_INDEX_NAME_LIT               "  "
#define COM_SQL_MP_PVIEW_NAME_LIT               "  "
#define COM_SQL_MP_SVIEW_NAME_LIT               "  "
#define COM_LOCK_NAME_LIT                       "LK"

enum ComClusteringScheme { COM_UNKNOWN_CLUSTERING
                         , COM_KEY_SEQ_CLUSTERING
                         , COM_ENTRY_SEQ_CLUSTERING
                         , COM_RELATIVE_CLUSTERING
                         };

#define COM_CLUSTERING_LIT_LEN              2
#define COM_UNKNOWN_CLUSTERING_LIT          "  "
#define COM_KEY_SEQ_CLUSTERING_LIT          "KS"
#define COM_ENTRY_SEQ_CLUSTERING_LIT        "ES"

#define COM_MAXIMUM_NUMBER_OF_COLUMNS       20000
#define COM_DIV_EXPR_BASE_TEXT_SUBID        20000

#define COM_MAXIMUM_LENGTH_OF_COMMENT       1000

enum ComColumnClass { COM_UNKNOWN_CLASS
                    , COM_SYSTEM_COLUMN
                    , COM_USER_COLUMN
                    , COM_ADDED_USER_COLUMN
                    , COM_MV_SYSTEM_ADDED_COLUMN
                    , COM_ALTERED_USER_COLUMN
                    };

#define COM_UNKNOWN_CLASS_LIT               "  "
#define COM_SYSTEM_COLUMN_LIT               "S "
#define COM_USER_COLUMN_LIT                 "U "
#define COM_ADDED_USER_COLUMN_LIT           "A "
#define COM_MV_SYSTEM_ADDED_COLUMN_LIT      "M "
#define COM_ALTERED_USER_COLUMN_LIT         "C "

/* This enum will be saved as integer in metadata tables
 * If you change it, that will affect the existing values
 * Make sure to add new values at the end
 */
enum ComColumnDefaultClass { COM_CURRENT_DEFAULT = 0
                           , COM_NO_DEFAULT = 1
                           , COM_NULL_DEFAULT = 2
                           , COM_USER_DEFINED_DEFAULT = 3
                           , COM_USER_FUNCTION_DEFAULT = 4
                           , COM_IDENTITY_GENERATED_BY_DEFAULT = 5
                           , COM_IDENTITY_GENERATED_ALWAYS =6
                           , COM_ALWAYS_COMPUTE_COMPUTED_COLUMN_DEFAULT = 7
                           , COM_ALWAYS_DEFAULT_COMPUTED_COLUMN_DEFAULT = 8
                           , COM_UUID_DEFAULT = 9 
                           , COM_CURRENT_UT_DEFAULT = 10
                           , COM_FUNCTION_DEFINED_DEFAULT = 11
                           };

#define COM_CURRENT_DEFAULT_LIT                     "CD"
#define COM_CURRENT_UT_DEFAULT_LIT                  "UT"
#define COM_FUNCTION_DEFINED_DEFAULT_LIT            "FD"
#define COM_NO_DEFAULT_LIT                          "  "
#define COM_NULL_DEFAULT_LIT                        "ND"
#define COM_USER_DEFINED_DEFAULT_LIT                "UD"
#define COM_USER_FUNCTION_DEFAULT_LIT               "UF"
#define COM_UUID_DEFAULT_LIT                        "UI"
#define COM_IDENTITY_GENERATED_BY_DEFAULT_LIT       "ID"
#define COM_IDENTITY_GENERATED_ALWAYS_LIT           "IA"
#define COM_ALWAYS_COMPUTE_COMPUTED_COLUMN_DEFAULT_LIT "AC"
#define COM_ALWAYS_DEFAULT_COMPUTED_COLUMN_DEFAULT_LIT "AD"

/* This enum will be saved as integer in metadata tables
 * If you change it, that will affect the existing values
 * Make sure to add new values at the end
 */
enum ComParamDefaultClass { COM_CURRENT_PARAM_DEFAULT        = COM_CURRENT_DEFAULT
                          , COM_NO_PARAM_DEFAULT 
                                                             = COM_NO_DEFAULT
                          , COM_NULL_PARAM_DEFAULT           = COM_NULL_DEFAULT
                          , COM_USER_DEFINED_PARAM_DEFAULT   = COM_USER_DEFINED_DEFAULT
                          , COM_USER_FUNCTION_PARAM_DEFAULT  = COM_USER_FUNCTION_DEFAULT
                            // IDENTITY GENERATED BY DEFAULT not applicable
                            // IDENTITY GENERATED ALWAYS     not applicable
                          , COM_ALWAYS_COMPUTE_COMPUTED_PARAM_DEFAULT // for future internal use only
                                                             = COM_ALWAYS_COMPUTE_COMPUTED_COLUMN_DEFAULT
                          , COM_ALWAYS_DEFAULT_COMPUTED_PARAM_DEFAULT // for future internal use only
                                                             = COM_ALWAYS_DEFAULT_COMPUTED_COLUMN_DEFAULT
                          , COM_UUID_PARAM_DEAULT            = COM_UUID_DEFAULT
                          , COM_CURRENT_UT_PARAM_DEFAULT     = COM_CURRENT_UT_DEFAULT
                          , COM_FUNCTION_DEFINED_PARAM_DEFAULT
                                                             = COM_FUNCTION_DEFINED_DEFAULT
                          };

#define COM_NO_PARAM_DEFAULT_LIT                      "  "
#define COM_CURRENT_PARAM_DEFAULT_LIT                 "CD"
#define COM_CURRENT_UT_PARAM_DEFAULT_LIT              "UT"
#define COM_NULL_PARAM_DEFAULT_LIT                    "ND"
#define COM_USER_DEFINED_PARAM_DEFAULT_LIT            "UD"
#define COM_USER_FUNCTION_PARAM_DEFAULT_LIT           "UF"
#define COM_ALWAYS_COMPUTE_COMPUTED_PARAM_DEFAULT_LIT "AC"
#define COM_ALWAYS_DEFAULT_COMPUTED_PARAM_DEFAULT_LIT "AD"
#define COM_FUNCTION_DEFINED_PARAM_DEFAULT_LIT        "FD"

// Represents the kind of string value stored in TEXT table.  Note
// that changing existing values will require an UPGRADE of the
// metadata.
enum ComTextType {COM_VIEW_TEXT = 0,
                  COM_CHECK_CONSTR_TEXT = 1,
                  COM_HBASE_OPTIONS_TEXT = 2,
                  COM_TABLE_COMMENT_TEXT = 3,
                  COM_COMPUTED_COL_TEXT = 4,
                  COM_HBASE_COL_FAMILY_TEXT = 5,
                  COM_HBASE_SPLIT_TEXT = 6,
                  COM_STORED_DESC_TEXT = 7,
                  COM_VIEW_REF_COLS_TEXT = 8,
                  COM_OBJECT_COMMENT_TEXT = COM_TABLE_COMMENT_TEXT,
                  COM_COLUMN_COMMENT_TEXT = 12
};

enum ComColumnDirection { COM_UNKNOWN_DIRECTION
                        , COM_INPUT_COLUMN
                        , COM_OUTPUT_COLUMN
                        , COM_INOUT_COLUMN
                        };

#define COM_UNKNOWN_DIRECTION_LIT        "  "
#define COM_INPUT_COLUMN_LIT             "I "
#define COM_OUTPUT_COLUMN_LIT            "O "
#define COM_INOUT_COLUMN_LIT             "N "

enum ComParamDirection { COM_UNKNOWN_PARAM_DIRECTION = COM_UNKNOWN_DIRECTION
                       , COM_INPUT_PARAM             = COM_INPUT_COLUMN
                       , COM_OUTPUT_PARAM            = COM_OUTPUT_COLUMN
                       , COM_INOUT_PARAM             = COM_INOUT_COLUMN
                       };

#define COM_UNKNOWN_PARAM_DIRECTION_LIT  "  "
#define COM_INPUT_PARAM_LIT              "I "
#define COM_OUTPUT_PARAM_LIT             "O "
#define COM_INOUT_PARAM_LIT              "N "

enum ComStoreByDetails { COM_STOREBY_DETAILS_UNKNOWN
                       , COM_STOREBY_DETAILS_V1
                       , COM_STOREBY_DETAILS_V2
                       };

#define COM_STOREBY_DETAILS_UNKNOWN_LIT  "  "
#define COM_STOREBY_DETAILS_V1_LIT       "V1"
#define COM_STOREBY_DETAILS_V2_LIT       "V2"

// The enum ComCompressionType  are used in 
// sqlutils/mxtool/replicate_schema_ddl.java
// Sync the changes with the java file also

enum ComCompressionType { COM_NO_COMPRESSION
                        , COM_SOFTWARE_COMPRESSION
                        , COM_HARDWARE_COMPRESSION
                        , COM_UNKNOWN_COMPRESSION
                        , COM_SYSTEM_COMPRESSION
                        , COM_SOURCE_COMPRESSION 
                        };

#define  COM_UNKNOWN_COMPRESSION_LIT            "  "
#define  COM_NO_COMPRESSION_LIT                 "N "
#define  COM_HARDWARE_COMPRESSION_LIT           "H "
#define  COM_SOFTWARE_COMPRESSION_LIT           "S "

enum ComColumnOrdering { COM_UNKNOWN_ORDER
                       , COM_ASCENDING_ORDER
                       , COM_DESCENDING_ORDER
                       };

#define COM_UNKNOWN_ORDER_LIT             "  "
#define COM_ASCENDING_ORDER_LIT           "A "
#define COM_DESCENDING_ORDER_LIT          "D "

enum ComRoutineParamType { COM_NORMAL_PARAM_TYPE
                         , COM_SAS_PUT_FORMAT_NAME_PARAM_TYPE
                         , COM_SAS_PUT_LOCALE_ID_PARAM_TYPE
                         , COM_SAS_SCORE_TABLE_NAME_PARAM_TYPE
                         };

#define COM_NORMAL_PARAM_TYPE_LIT                    "  "
#define COM_SAS_PUT_FORMAT_NAME_PARAM_TYPE_LIT       "SF"
#define COM_SAS_PUT_LOCALE_ID_PARAM_TYPE_LIT         "SL"
#define COM_SAS_SCORE_TABLE_NAME_PARAM_TYPE_LIT      "SM"

enum ComConstraintType { COM_UNKNOWN_CONSTRAINT
                       , COM_CHECK_CONSTRAINT
                       , COM_FOREIGN_KEY_CONSTRAINT
                       , COM_PRIMARY_KEY_CONSTRAINT
                       , COM_UNIQUE_CONSTRAINT
                       };

#define COM_CHECK_CONSTRAINT_LIT                  "C "
#define COM_FOREIGN_KEY_CONSTRAINT_LIT            "F "
#define COM_PRIMARY_KEY_CONSTRAINT_LIT            "P "
#define COM_UNIQUE_CONSTRAINT_LIT                 "U "
#define COM_UNKNOWN_CONSTRAINT_LIT                "  "

enum ComObjectClass { COM_CLASS_USER_METADATA
                    , COM_CLASS_MV_UMD
                    , COM_CLASS_USER_TABLE
                    , COM_CLASS_SYSTEM_METADATA
                    , COM_CLASS_UNKNOWN
                    , COM_CLASS_SYSTEM_TABLE
                    };

#define COM_CLASS_LIT_LEN                          2
#define COM_CLASS_USER_METADATA_LIT                "UM"
#define COM_CLASS_MV_UMD_LIT                       "MU"
#define COM_CLASS_USER_TABLE_LIT                   "UT"
#define COM_CLASS_SYSTEM_METADATA_LIT              "SM"
#define COM_CLASS_SYSTEM_TABLE_LIT                 "ST"
#define COM_CLASS_UNKNOWN_LIT                      "  "


enum ComComponentPrivilegeClass { COM_INTERNAL_COMPONENT_PRIVILEGE  =0
                            , COM_EXTERNAL_COMPONENT_PRIVILEGE
                            };

#define COM_INTERNAL_COMPONENT_PRIVILEGE_LIT "IN"
#define COM_EXTERNAL_COMPONENT_PRIVILEGE_LIT "EX"

// Values are identical to 'enum rec_datetime_field' in dfs2rec.h
enum ComDateTimeStartEnd { COM_DTSE_UNKNOWN = 0
                         , COM_DTSE_YEAR    = 1
                         , COM_DTSE_MONTH
                         , COM_DTSE_DAY
                         , COM_DTSE_HOUR
                         , COM_DTSE_MINUTE
                         , COM_DTSE_SECOND
                         , COM_DTSE_FRACTION    // used only in MP, not ARK!
                         };

enum ComCreateViewBehavior { COM_CREATE_VIEW_BEHAVIOR
                     , COM_CREATE_OR_REPLACE_VIEW_BEHAVIOR
                     , COM_CREATE_OR_REPLACE_VIEW_CASCADE_BEHAVIOR
		     , COM_CREATE_SYSTEM_VIEW_BEHAVIOR
                     };

enum ComDropBehavior { COM_UNKNOWN_DROP_BEHAVIOR
                     , COM_CASCADE_DROP_BEHAVIOR
                     , COM_RESTRICT_DROP_BEHAVIOR
		     , COM_NO_CHECK_DROP_BEHAVIOR
		     , COM_CASCADE_INVALIDATE_DEPENDENT_BEHAVIOR
                     };

enum ComDropType     { COM_DROP_SINGLE
                     , COM_DROP_ALL
                     };

enum ComLibraryPathType  { COM_LIBRARY_PATH_FULL = 2
                         , COM_LIBRARY_PATH_PARTIAL
                         };

enum ComRegisterBehavior { COM_UNKNOWN_REGISTER_BEHAVIOR
                         , COM_CASCADE_REGISTER_BEHAVIOR
                         , COM_RESTRICT_REGISTER_BEHAVIOR
                         };

enum ComUnregisterBehavior { COM_UNKNOWN_UNREGISTER_BEHAVIOR
                           , COM_CASCADE_UNREGISTER_BEHAVIOR
                           , COM_RESTRICT_UNREGISTER_BEHAVIOR
                           };

// Values are identical to '#define REC_xxx value' in dfs2rec.h
enum ComFSDataType { COM_UNKNOWN_FSDT              = -1
                   , COM_FCHAR_FSDT                = REC_BYTE_F_ASCII
                   , COM_FCHAR_DBL_FSDT            = REC_BYTE_F_DOUBLE
                   , COM_VCHAR_FSDT                = REC_BYTE_V_ASCII
                   , COM_VCHAR_DBL_FSDT            = REC_BYTE_V_DOUBLE
                   , COM_VCHAR_LONG_FSDT           = REC_BYTE_V_ASCII_LONG
                   , COM_SIGNED_BIN8_FSDT          = REC_BIN8_SIGNED
                   , COM_UNSIGNED_BIN8_FSDT        = REC_BIN8_UNSIGNED
                   , COM_SIGNED_BIN16_FSDT         = REC_BIN16_SIGNED
                   , COM_UNSIGNED_BIN16_FSDT       = REC_BIN16_UNSIGNED
                   , COM_SIGNED_BIN32_FSDT         = REC_BIN32_SIGNED
                   , COM_UNSIGNED_BIN32_FSDT       = REC_BIN32_UNSIGNED
                   , COM_SIGNED_BIN64_FSDT         = REC_BIN64_SIGNED
                   , COM_UNSIGNED_BPINT_FSDT       = REC_BPINT_UNSIGNED
                   , COM_FLOAT32_FSDT              = REC_FLOAT32
                   , COM_FLOAT64_FSDT              = REC_FLOAT64
                   , COM_UNSIGNED_DECIMAL_FSDT     = REC_DECIMAL_UNSIGNED
                   , COM_SIGNED_DECIMAL_FSDT       = REC_DECIMAL_LSE
                   , COM_SIGNED_NUM_BIG_FSDT       = REC_NUM_BIG_SIGNED
                   , COM_UNSIGNED_NUM_BIG_FSDT     = REC_NUM_BIG_UNSIGNED

		   , COM_BLOB                      = REC_BLOB
		   , COM_CLOB                      = REC_CLOB

                   , COM_BOOLEAN                   = REC_BOOLEAN

                   , COM_DATETIME_FSDT             = REC_DATETIME
                   , COM_INTERVAL_MIN_FSDT         = REC_MIN_INTERVAL
                   , COM_INTERVAL_YEAR_YEAR_FSDT   = REC_INT_YEAR
                   , COM_INTERVAL_MON_MON_FSDT     = REC_INT_MONTH
                   , COM_INTERVAL_YEAR_MON_FSDT    = REC_INT_YEAR_MONTH
                   , COM_INTERVAL_DAY_DAY_FSDT     = REC_INT_DAY
                   , COM_INTERVAL_HOUR_HOUR_FSDT   = REC_INT_HOUR
                   , COM_INTERVAL_DAY_HOUR_FSDT    = REC_INT_DAY_HOUR
                   , COM_INTERVAL_MIN_MIN_FSDT     = REC_INT_MINUTE
                   , COM_INTERVAL_HOUR_MIN_FSDT    = REC_INT_HOUR_MINUTE
                   , COM_INTERVAL_DAY_MIN_FSDT     = REC_INT_DAY_MINUTE
                   , COM_INTERVAL_SEC_SEC_FSDT     = REC_INT_SECOND
                   , COM_INTERVAL_MIN_SEC_FSDT     = REC_INT_MINUTE_SECOND
                   , COM_INTERVAL_HOUR_SEC_FSDT    = REC_INT_HOUR_SECOND
                   , COM_INTERVAL_DAY_SEC_FSDT     = REC_INT_DAY_SECOND
                   , COM_INTERVAL_MAX_FSDT         = REC_MAX_INTERVAL
                   , COM_LAST_FSDT                              // last value
                   };

// TBD: clean these grantee/grantor types 
enum ComGranteeType { COM_UNKNOWN_GRANTEE_TYPE
                    , COM_PUBLIC_GRANTEE
                    , COM_USER_GRANTEE
// Can get rid of schema owner and possibly "any"
                    , COM_SCHEMA_OWNER_GRANTEE
                    , COM_ANY_GRANTEE
                    };
// There is no corresponding *_LIT value for COM_ANY_GRANTEE as it is
// only used in matching; it is never stored in metadata.
#define COM_UNKNOWN_GRANTEE_TYPE_LIT               "  "
#define COM_PUBLIC_GRANTEE_LIT                     "P "
#define COM_USER_GRANTEE_LIT                       "U "
// Can get rid of schema owner
#define COM_SCHEMA_OWNER_GRANTEE_LIT               "O "

enum ComIdClass { COM_UNKNOWN_ID_CLASS
                , COM_ROLE_CLASS
                , COM_USER_CLASS
                };

#define COM_UNKNOWN_ID_CLASS_LIT       "  "
#define COM_ROLE_CLASS_LIT             "R "
#define COM_USER_CLASS_LIT             "U "

enum ComIdStatus { COM_UNKNOWN_ID_STATUS
                 , COM_AVAILABLE_ID_STATUS
                 , COM_USED_ID_STATUS
                 , COM_PROTECTED_ID_STATUS
                 };

#define COM_UNKNOWN_ID_STATUS_LIT       "  "
#define COM_AVAILABLE_ID_STATUS_LIT     "A "
#define COM_USED_ID_STATUS_LIT          "U "
#define COM_PROTECTED_ID_STATUS_LIT     "P "

/* TBD: can remove
enum ComGranteeClass { COM_UNKNOWN_GRANTEE_CLASS
                     , COM_ROLE_CLASS
                     , COM_LDAP_GROUP_CLASS
                     , COM_USER_CLASS
                     };

#define COM_UNKNOWN_GRANTEE_CLASS_LIT          "  "
#define COM_ROLE_CLASS_LIT                     "R "
#define COM_LDAP_GROUP_CLASS_LIT               "G "
#define COM_USER_CLASS_LIT                     "U "

enum ComGrantorClass { COM_UNKNOWN_GRANTOR_CLASS
                     , COM_ROLE_CLASS
                     , COM_LDAP_GROUP_CLASS
                     , COM_USER_CLASS
                     };

#define COM_UNKNOWN_GRANTOR_CLASS_LIT          "  "
*/

enum ComGrantorType { COM_UNKNOWN_GRANTOR_TYPE
                    , COM_SYSTEM_GRANTOR
                    , COM_USER_GRANTOR
// can get rid of these next 2: owner and any
                    , COM_SCHEMA_OWNER_GRANTOR
                    , COM_ANY_GRANTOR
                    };

// There is no corresponding *_LIT value for COM_ANY_GRANTOR as it is
// only used in matching; it is never stored in metadata.
#define COM_UNKNOWN_GRANTOR_TYPE_LIT               "  "
#define COM_SYSTEM_GRANTOR_LIT                     "S "
#define COM_USER_GRANTOR_LIT                       "U "
// can get rid of schema owner
#define COM_SCHEMA_OWNER_GRANTOR_LIT               "O "

enum ComRoleIdStatus { COM_UNKNOWN_STATUS
                     , COM_AVAILABLE_STATUS
                     , COM_USED_STATUS
                     };

#define COM_UNKNOWN_STATUS_LIT               "  "
#define COM_AVAILABLE_STATUS_LIT             "A "
#define COM_USED_STATUS_LIT                  "U "

enum ComLevels { COM_UNKNOWN_LEVEL
               , COM_CASCADED_LEVEL
               , COM_LOCAL_LEVEL
               };

// For any new object type, add a define for the corresponding string literal
// below, and a case in comObjectTypeLit().
enum ComObjectType { COM_UNKNOWN_OBJECT
                   , COM_BASE_TABLE_OBJECT
                   , COM_CHECK_CONSTRAINT_OBJECT
                   , COM_INDEX_OBJECT
                   , COM_LIBRARY_OBJECT
                   , COM_LOCK_OBJECT
                   , COM_MODULE_OBJECT
                   , COM_NOT_NULL_CONSTRAINT_OBJECT
                   , COM_PRIMARY_KEY_CONSTRAINT_OBJECT
                   , COM_REFERENTIAL_CONSTRAINT_OBJECT
                   , COM_STORED_PROCEDURE_OBJECT
                   , COM_UNIQUE_CONSTRAINT_OBJECT
                   , COM_USER_DEFINED_ROUTINE_OBJECT
                   , COM_VIEW_OBJECT
                   , COM_MV_OBJECT   // MV
                   , COM_MVRG_OBJECT    // OZ
                   , COM_TRIGGER_OBJECT
                   , COM_LOB_TABLE_OBJECT
                   , COM_TRIGGER_TABLE_OBJECT
                   , COM_SYNONYM_OBJECT
                   , COM_PRIVATE_SCHEMA_OBJECT
                   , COM_SHARED_SCHEMA_OBJECT
                   , COM_EXCEPTION_TABLE_OBJECT
                   , COM_SEQUENCE_GENERATOR_OBJECT
                   };
                   
// OBJECT_LIT values are also used by COM_AUD* defines below
#define COM_OBJECT_LIT_LEN                      2
#define COM_UNKNOWN_OBJECT_LIT                  "  "
#define COM_BASE_TABLE_OBJECT_LIT               "BT"
#define COM_CHECK_CONSTRAINT_OBJECT_LIT         "CC"
#define COM_INDEX_OBJECT_LIT                    "IX"
#define COM_LIBRARY_OBJECT_LIT                  "LB"
#define COM_LOCK_OBJECT_LIT                     "LK"
#define COM_MODULE_OBJECT_LIT                   "MD"
#define COM_NOT_NULL_CONSTRAINT_OBJECT_LIT      "NN"
#define COM_PRIMARY_KEY_CONSTRAINT_OBJECT_LIT   "PK"
#define COM_REFERENTIAL_CONSTRAINT_OBJECT_LIT   "RC"
#define COM_STORED_PROCEDURE_OBJECT_LIT         "SP"
#define COM_UNIQUE_CONSTRAINT_OBJECT_LIT        "UC"
#define COM_USER_DEFINED_ROUTINE_OBJECT_LIT     "UR"
#define COM_VIEW_OBJECT_LIT                     "VI"
#define COM_MV_OBJECT_LIT                       "MV"
#define COM_MVRG_OBJECT_LIT                     "RG"  // OZ
#define COM_TRIGGER_OBJECT_LIT                  "TR"
#define COM_LOB_TABLE_OBJECT_LIT                "LT"
#define COM_TRIGGER_TABLE_OBJECT_LIT            "TT"
#define COM_SYNONYM_OBJECT_LIT                  "SY"
#define COM_SHARED_SCHEMA_OBJECT_LIT            "SS"
#define COM_PRIVATE_SCHEMA_OBJECT_LIT           "PS"
#define COM_EXCEPTION_TABLE_OBJECT_LIT          "EX"
#define COM_SEQUENCE_GENERATOR_OBJECT_LIT       "SG"

// This enum has a similar one, SG_IE_TYPE, in parser/ElemDDLSGOptions.h
// Should keep them in sync.
enum ComSequenceGeneratorType { COM_UNKNOWN_SG
                              , COM_INTERNAL_SG
                              , COM_EXTERNAL_SG
                              , COM_INTERNAL_COMPUTED_SG
                              };

#define COM_UNKNOWN_SG_LIT  "  "
#define COM_INTERNAL_SG_LIT "I "
#define COM_EXTERNAL_SG_LIT "E "
#define COM_INTERNAL_COMPUTED_SG_LIT "C "


enum ComODBCDataType { COM_UNKNOWN_ODT
                     , COM_CHARACTER_ODT
                     , COM_VARCHAR_ODT
                     , COM_LONG_VARCHAR_ODT
                     , COM_NUMERIC_SIGNED_ODT
                     , COM_NUMERIC_UNSIGNED_ODT
                     , COM_TINYINT_SIGNED_ODT
                     , COM_TINYINT_UNSIGNED_ODT
                     , COM_SMALLINT_SIGNED_ODT
                     , COM_SMALLINT_UNSIGNED_ODT
                     , COM_INTEGER_SIGNED_ODT
                     , COM_INTEGER_UNSIGNED_ODT
                     , COM_LARGEINT_SIGNED_ODT
                     , COM_LARGEINT_UNSIGNED_ODT
                     , COM_BIGINT_SIGNED_ODT
                     , COM_FLOAT_ODT
                     , COM_REAL_ODT
                     , COM_DOUBLE_ODT
                     , COM_DECIMAL_SIGNED_ODT
                     , COM_DECIMAL_UNSIGNED_ODT
                     , COM_LARGE_DECIMAL_SIGNED_ODT
                     , COM_LARGE_DECIMAL_UNSIGNED_ODT
		     , COM_BLOB_ODT
		     , COM_CLOB_ODT
		     , COM_BOOLEAN_ODT
                     , COM_DATETIME_ODT
                     , COM_TIMESTAMP_ODT
                     , COM_DATE_ODT
                     , COM_TIME_ODT
                     , COM_INTERVAL_ODT
                     };

#define COM_UNKNOWN_ODT_LIT                    "                  "
#define COM_CHARACTER_ODT_LIT                  "CHARACTER         "
#define COM_VARCHAR_ODT_LIT                    "VARCHAR           "
#define COM_LONG_VARCHAR_ODT_LIT               "LONG VARCHAR      "
#define COM_NUMERIC_SIGNED_ODT_LIT             "SIGNED NUMERIC    "
#define COM_NUMERIC_UNSIGNED_ODT_LIT           "UNSIGNED NUMERIC  "
#define COM_TINYINT_SIGNED_ODT_LIT             "SIGNED TINYINT    "
#define COM_TINYINT_UNSIGNED_ODT_LIT           "UNSIGNED TINYINT  "
#define COM_SMALLINT_SIGNED_ODT_LIT            "SIGNED SMALLINT   "
#define COM_SMALLINT_UNSIGNED_ODT_LIT          "UNSIGNED SMALLINT "
#define COM_INTEGER_SIGNED_ODT_LIT             "SIGNED INTEGER    "
#define COM_INTEGER_UNSIGNED_ODT_LIT           "UNSIGNED INTEGER  "
#define COM_LARGEINT_SIGNED_ODT_LIT            "SIGNED LARGEINT   "
#define COM_LARGEINT_UNSIGNED_ODT_LIT          "UNSIGNED LARGEINT "
#define COM_BIGINT_SIGNED_ODT_LIT              "SIGNED BIGINT     "
#define COM_FLOAT_ODT_LIT                      "FLOAT             "
#define COM_REAL_ODT_LIT                       "REAL              "
#define COM_DOUBLE_ODT_LIT                     "DOUBLE            "
#define COM_DECIMAL_SIGNED_ODT_LIT             "SIGNED DECIMAL    "
#define COM_DECIMAL_UNSIGNED_ODT_LIT           "UNSIGNED DECIMAL  "
#define COM_DATETIME_ODT_LIT                   "DATETIME          "
#define COM_TIMESTAMP_ODT_LIT                  "TIMESTAMP         "
#define COM_DATE_ODT_LIT                       "DATE              "
#define COM_TIME_ODT_LIT                       "TIME              "
#define COM_INTERVAL_ODT_LIT                   "INTERVAL          "
#define COM_BLOB_ODT_LIT                       "BLOB              "
#define COM_CLOB_ODT_LIT                       "CLOB              "
#define COM_BOOLEAN_ODT_LIT                    "BOOLEAN           "

enum ComAccessPathType  { COM_UNKNOWN_ACCESS_PATH_TYPE
                        , COM_BASE_TABLE_TYPE
                        , COM_INDEX_TYPE
                        , COM_LOB_TABLE_TYPE
                        };

#define COM_ACCESS_PATH_TYPE_LIT_LEN                  2
#define COM_UNKNOWN_ACCESS_PATH_TYPE_LIT              "  "
#define COM_BASE_TABLE_TYPE_LIT                       "BT"
#define COM_INDEX_TYPE_LIT                            "IX"
#define COM_LOB_TABLE_TYPE_LIT                        "LT"


enum ComPartitioningScheme { COM_UNSPECIFIED_PARTITIONING
                           , COM_NO_PARTITIONING
                           , COM_SINGLE_PARTITIONING = COM_NO_PARTITIONING
                           , COM_RANGE_PARTITIONING
                           , COM_SYSTEM_PARTITIONING
                           , COM_ROUND_ROBIN_PARTITIONING
                           , COM_HASH_V1_PARTITIONING
                           , COM_HASH_V2_PARTITIONING
                           , COM_UNKNOWN_PARTITIONING
                           };

#define COM_PARTITIONING_LIT_LEN             2
#define COM_UNSPECIFIED_PARTITIONING_LIT     "  "
#define COM_NO_PARTITIONING_LIT              "N "
#define COM_SINGLE_PARTITIONING_LIT          COM_NO_PARTITIONING_LIT
#define COM_RANGE_PARTITIONING_LIT           "RP"
#define COM_SYSTEM_PARTITIONING_LIT          "SP"
#define COM_ROUND_ROBIN_PARTITIONING_LIT     "RR"
#define COM_HASH_V1_PARTITIONING_LIT         "HP"
#define COM_HASH_V2_PARTITIONING_LIT         "H2"
#define COM_UNKNOWN_PARTITIONING_LIT         COM_UNSPECIFIED_PARTITIONING_LIT


// aligned_format:   All columns are stored in an internal row aligned format,
//                   and the whole row is stored in one hbase cell.
// hbase_format:     each col is stored as one hbase cell with data in native
//                   format (for ex: INT datatype is stored as 4-byte integer)
// hbase_str_format: same as hbase_format except data is stored in displayable
//                   string format(for ex: 100 is stored as string '100')
enum ComRowFormat {  COM_UNKNOWN_FORMAT_TYPE
                     , COM_ALIGNED_FORMAT_TYPE
                     , COM_HBASE_FORMAT_TYPE
                     , COM_HBASE_STR_FORMAT_TYPE
};

#define COM_ROWFORMAT_LIT_LEN                2
#define COM_UNKNOWN_FORMAT_LIT               "  "
#define COM_ALIGNED_FORMAT_LIT               "AF"
#define COM_HBASE_FORMAT_LIT                 "HF"
#define COM_HBASE_STR_FORMAT_LIT             "HS"

// table load action: regular, SET or MULTISET.
// Regular:  will error out if duplicate key is inserted.
// SET:      will silently ignore duplicate rows on insert.
//           Error will not be returned.
// MULTISET: will allow duplicate rows by adding a SYSKEY.
//           This option not currently supported.
enum ComInsertMode  { COM_UNKNOWN_TABLE_INSERT_MODE,
                      COM_REGULAR_TABLE_INSERT_MODE    // reject dups
                    , COM_SET_TABLE_INSERT_MODE        // discard/ignore dups
                    , COM_MULTISET_TABLE_INSERT_MODE   // allow dups
                    };
#define COM_INSERT_MODE_LIT_LEN                           2
#define COM_UNKNOWN_TABLE_INSERT_MODE_LIT                 "  "
#define COM_REGULAR_TABLE_INSERT_MODE_LIT                 "RD"
#define COM_SET_TABLE_INSERT_MODE_LIT                     "DD"
#define COM_MULTISET_TABLE_INSERT_MODE_LIT                "AD"

// The order of ComPrivilegeType matters.  As new privileges begin to be used
// they should be added after privileges that are already used.  This is so we
// can have code that can check if a privilege is higher than what a certain
// schema version can understand.
enum ComPrivilegeType { COM_UNKNOWN_PRIVILEGE = 0   // must always be first
// Privileges used in schema v2000
                      , COM_SELECT_PRIVILEGE
                      , COM_INSERT_PRIVILEGE
                      , COM_DELETE_PRIVILEGE
                      , COM_UPDATE_PRIVILEGE
                      , COM_USAGE_PRIVILEGE
                      , COM_REFERENCE_PRIVILEGE
                      , COM_EXECUTE_PRIVILEGE
                      , COM_DATABASE_ADMINISTRATOR_PRIVILEGE
// Privileges used in schema v2300
                      , COM_CREATE_PRIVILEGE
                      , COM_CREATE_TABLE_PRIVILEGE
                      , COM_CREATE_VIEW_PRIVILEGE
                      , COM_ALTER_PRIVILEGE
                      , COM_ALTER_TABLE_PRIVILEGE
// Privileges implemented but not externalized
                      , COM_CREATE_LIBRARY_PRIVILEGE
                      , COM_CREATE_MV_PRIVILEGE
                      , COM_CREATE_PROCEDURE_PRIVILEGE
                      , COM_CREATE_SYNONYM_PRIVILEGE
                      , COM_CREATE_TRIGGER_PRIVILEGE
                      , COM_CREATE_MV_GROUP_PRIVILEGE
                      , COM_ALTER_LIBRARY_PRIVILEGE
                      , COM_ALTER_MV_PRIVILEGE
                      , COM_ALTER_SYNONYM_PRIVILEGE
                      , COM_ALTER_MV_GROUP_PRIVILEGE
                      , COM_ALTER_TRIGGER_PRIVILEGE
                      , COM_ALTER_VIEW_PRIVILEGE
                      , COM_DROP_PRIVILEGE
                      , COM_DROP_TABLE_PRIVILEGE
                      , COM_DROP_LIBRARY_PRIVILEGE
                      , COM_DROP_MV_PRIVILEGE
                      , COM_DROP_MV_GROUP_PRIVILEGE
                      , COM_DROP_PROCEDURE_PRIVILEGE
                      , COM_DROP_SYNONYM_PRIVILEGE
                      , COM_DROP_TRIGGER_PRIVILEGE
                      , COM_DROP_VIEW_PRIVILEGE
// Privileges used in schema v2500
                      , COM_ALTER_ROUTINE_PRIVILEGE
                      , COM_ALTER_ROUTINE_ACTION_PRIVILEGE
                      , COM_CREATE_ROUTINE_PRIVILEGE
                      , COM_CREATE_ROUTINE_ACTION_PRIVILEGE
                      , COM_DROP_ROUTINE_PRIVILEGE
                      , COM_DROP_ROUTINE_ACTION_PRIVILEGE
// Privileges defined for Business Continuity
                      , COM_BUSINESS_CONTINUITY_PRIVILEGE
                      , COM_BACKUP_PRIVILEGE
                      , COM_RESTORE_PRIVILEGE
                      , COM_ARCHIVE_PRIVILEGE
// The Privileges below are not yet used; the ones that become used should
// be moved to before those that remain unused.
                      , COM_TRIGGER_PRIVILEGE
                      , COM_MAINTAIN_PRIVILEGE
                      , COM_REFRESH_PRIVILEGE
                      , COM_REORG_PRIVILEGE
                      , COM_UPDATE_STATS_PRIVILEGE
                      };

#define COM_PRIVILEGE_LIT_LEN               2
#define COM_UNKNOWN_PRIVILEGE_LIT           "  "
#define COM_SELECT_PRIVILEGE_LIT            "S "
#define COM_INSERT_PRIVILEGE_LIT            "I "
#define COM_DELETE_PRIVILEGE_LIT            "D "
#define COM_UPDATE_PRIVILEGE_LIT            "U "
#define COM_USAGE_PRIVILEGE_LIT             "Y "
#define COM_REFERENCE_PRIVILEGE_LIT         "R "
#define COM_EXECUTE_PRIVILEGE_LIT           "E "
#define COM_ALTER_TABLE_PRIVILEGE_LIT       "AB"
#define COM_ALTER_LIBRARY_PRIVILEGE_LIT     "AL"
#define COM_ALTER_MV_PRIVILEGE_LIT          "AM"
#define COM_ALTER_SYNONYM_PRIVILEGE_LIT     "AS"
#define COM_ALTER_VIEW_PRIVILEGE_LIT        "AV"
#define COM_TRIGGER_PRIVILEGE_LIT           "T "
#define COM_MAINTAIN_PRIVILEGE_LIT          "M "
#define COM_REFRESH_PRIVILEGE_LIT           "RF"
#define COM_REORG_PRIVILEGE_LIT             "RO"
#define COM_UPDATE_STATS_PRIVILEGE_LIT      "US"

// ADDITIONAL PRIVILEGES LITs FOR SCHEMA PRIVILEGES TABLE

#define COM_DATABASE_ADMINISTRATOR_PRIVILEGE_LIT   "AD"
#define COM_ALTER_PRIVILEGE_LIT                    "A "
#define COM_ALTER_TRIGGER_PRIVILEGE_LIT            "AT"
#define COM_ALTER_MV_GROUP_PRIVILEGE_LIT           "AG"
#define COM_ALTER_ROUTINE_PRIVILEGE_LIT            "AR"
#define COM_ALTER_ROUTINE_ACTION_PRIVILEGE_LIT     "AA"
#define COM_CREATE_PRIVILEGE_LIT                   "C "
#define COM_CREATE_TABLE_PRIVILEGE_LIT             "CB"
#define COM_CREATE_LIBRARY_PRIVILEGE_LIT           "CL"
#define COM_CREATE_MV_PRIVILEGE_LIT                "CM"
#define COM_CREATE_PROCEDURE_PRIVILEGE_LIT         "CP"
#define COM_CREATE_SYNONYM_PRIVILEGE_LIT           "CS"
#define COM_CREATE_TRIGGER_PRIVILEGE_LIT           "CT"
#define COM_CREATE_VIEW_PRIVILEGE_LIT              "CV"
#define COM_CREATE_MV_GROUP_PRIVILEGE_LIT          "CG"
#define COM_CREATE_ROUTINE_PRIVILEGE_LIT           "CR"
#define COM_CREATE_ROUTINE_ACTION_PRIVILEGE_LIT    "CA"
#define COM_DROP_PRIVILEGE_LIT                     "DR"
#define COM_DROP_TABLE_PRIVILEGE_LIT               "DB"
#define COM_DROP_LIBRARY_PRIVILEGE_LIT             "DL"
#define COM_DROP_MV_PRIVILEGE_LIT                  "DM"
#define COM_DROP_MV_GROUP_PRIVILEGE_LIT            "DG"
#define COM_DROP_PROCEDURE_PRIVILEGE_LIT           "DP"
#define COM_DROP_ROUTINE_PRIVILEGE_LIT             "DD"
#define COM_DROP_ROUTINE_ACTION_PRIVILEGE_LIT      "DA"
#define COM_DROP_SYNONYM_PRIVILEGE_LIT             "DS"
#define COM_DROP_TRIGGER_PRIVILEGE_LIT             "DT"
#define COM_DROP_VIEW_PRIVILEGE_LIT                "DV"
#define COM_BUSINESS_CONTINUITY_PRIVILEGE_LIT      "BC"
#define COM_BACKUP_PRIVILEGE_LIT                   "BA"
#define COM_RESTORE_PRIVILEGE_LIT                  "RS"
#define COM_ARCHIVE_PRIVILEGE_LIT                  "AC"

// Values for Query Invalidation
enum ComQIActionType { COM_QI_INVALID_ACTIONTYPE = 0
                     , COM_QI_USER_GRANT_ROLE
                     , COM_QI_ROLE_GRANT_ROLE
                     , COM_QI_OBJECT_SELECT
                     , COM_QI_OBJECT_INSERT
                     , COM_QI_OBJECT_DELETE
                     , COM_QI_OBJECT_UPDATE
                     , COM_QI_OBJECT_USAGE
                     , COM_QI_OBJECT_REFERENCES
                     , COM_QI_SCHEMA_SELECT
                     , COM_QI_SCHEMA_INSERT
                     , COM_QI_SCHEMA_DELETE
                     , COM_QI_SCHEMA_UPDATE
                     , COM_QI_SCHEMA_USAGE
                     , COM_QI_SCHEMA_REFERENCES
                     , COM_QI_OBJECT_EXECUTE
                     , COM_QI_SCHEMA_EXECUTE
                     , COM_QI_USER_GRANT_SPECIAL_ROLE
                     , COM_QI_OBJECT_REDEF
                     , COM_QI_STATS_UPDATED
                     , COM_QI_GRANT_ROLE
                     } ;

#define COM_QI_INVALID_ACTIONTYPE_LIT  "  "
#define COM_QI_USER_GRANT_ROLE_LIT     "UR"
#define COM_QI_ROLE_GRANT_ROLE_LIT     "RR"
#define COM_QI_OBJECT_SELECT_LIT       "OS"
#define COM_QI_OBJECT_INSERT_LIT       "OI"
#define COM_QI_OBJECT_DELETE_LIT       "OD"
#define COM_QI_OBJECT_UPDATE_LIT       "OU"
#define COM_QI_OBJECT_USAGE_LIT        "OG"
#define COM_QI_OBJECT_REFERENCES_LIT   "OF"
#define COM_QI_SCHEMA_SELECT_LIT       "SS"
#define COM_QI_SCHEMA_INSERT_LIT       "SI"
#define COM_QI_SCHEMA_DELETE_LIT       "SD"
#define COM_QI_SCHEMA_UPDATE_LIT       "SU"
#define COM_QI_SCHEMA_USAGE_LIT        "SG"
#define COM_QI_SCHEMA_REFERENCES_LIT   "SF"
#define COM_QI_OBJECT_EXECUTE_LIT      "OE"
#define COM_QI_SCHEMA_EXECUTE_LIT      "SE"
#define COM_QI_USER_GRANT_SPECIAL_ROLE_LIT     "UZ"
#define COM_QI_OBJECT_REDEF_LIT        "OR"
#define COM_QI_STATS_UPDATED_LIT       "US"
#define COM_QI_GRANT_ROLE_LIT          "GG"



enum ComRCDeleteRule { COM_UNKNOWN_DELETE_RULE
                     , COM_CASCADE_DELETE_RULE
                     , COM_NO_ACTION_DELETE_RULE
                     , COM_SET_DEFAULT_DELETE_RULE
                     , COM_SET_NULL_DELETE_RULE
                     , COM_RESTRICT_DELETE_RULE
                     };

#define COM_UNKNOWN_DELETE_RULE_LIT               "  "
#define COM_CASCADE_DELETE_RULE_LIT               "CA"
#define COM_NO_ACTION_DELETE_RULE_LIT             "NA"
#define COM_SET_DEFAULT_DELETE_RULE_LIT           "SD"
#define COM_SET_NULL_DELETE_RULE_LIT              "SN"
#define COM_RESTRICT_DELETE_RULE_LIT              "RE"

enum ComRCMatchOption { COM_UNKNOWN_MATCH_OPTION
                      , COM_FULL_MATCH_OPTION
                      , COM_NONE_MATCH_OPTION
                      , COM_PARTIAL_MATCH_OPTION
                      };

#define COM_UNKNOWN_MATCH_OPTION_LIT               "  "
#define COM_FULL_MATCH_OPTION_LIT                  "F "
#define COM_NONE_MATCH_OPTION_LIT                  "N "
#define COM_PARTIAL_MATCH_OPTION_LIT               "P "

enum ComRCUpdateRule { COM_UNKNOWN_UPDATE_RULE
                     , COM_CASCADE_UPDATE_RULE
                     , COM_NO_ACTION_UPDATE_RULE
                     , COM_SET_DEFAULT_UPDATE_RULE
                     , COM_SET_NULL_UPDATE_RULE
                     , COM_RESTRICT_UPDATE_RULE
                     };

#define COM_UNKNOWN_UPDATE_RULE_LIT                 "  "
#define COM_CASCADE_UPDATE_RULE_LIT                 "CA"
#define COM_NO_ACTION_UPDATE_RULE_LIT               "NA"
#define COM_SET_DEFAULT_UPDATE_RULE_LIT             "SD"
#define COM_SET_NULL_UPDATE_RULE_LIT                "SN"
#define COM_RESTRICT_UPDATE_RULE_LIT                "RE"

enum ComRoutineLanguage { COM_UNKNOWN_ROUTINE_LANGUAGE
                        , COM_LANGUAGE_JAVA
                        , COM_LANGUAGE_C
                        , COM_LANGUAGE_CPP
                        , COM_LANGUAGE_SQL
                        };

#define COM_UNKNOWN_ROUTINE_LANGUAGE_LIT            "  "
#define COM_LANGUAGE_JAVA_LIT                       "J "
#define COM_LANGUAGE_C_LIT                          "C "
#define COM_LANGUAGE_CPP_LIT                        "C+"
#define COM_LANGUAGE_SQL_LIT                        "S "

// Parameter passing styles for stored procedures and user-defined
// functions.
enum ComRoutineParamStyle { COM_UNKNOWN_ROUTINE_PARAM_STYLE
                          , COM_STYLE_GENERAL
                          , COM_STYLE_JAVA_CALL
                          , COM_STYLE_JAVA_OBJ
                          , COM_STYLE_SQL
                          , COM_STYLE_SQLROW
                          , COM_STYLE_SQLROW_TM
                          , COM_STYLE_CPP_OBJ
                          };

#define COM_UNKNOWN_ROUTINE_PARAM_STYLE_LIT         "  "
#define COM_STYLE_GENERAL_LIT                       "G "
#define COM_STYLE_JAVA_CALL_LIT                     "J "
#define COM_STYLE_JAVA_OBJ_LIT                      "JO"
#define COM_STYLE_SQL_LIT                           "S "
#define COM_STYLE_SQLROW_LIT                        "SR"
#define COM_STYLE_SQLROW_TM_LIT                     "TM"
#define COM_STYLE_CPP_OBJ_LIT                       "C+"

#define COM_UNKNOWN_ROUTINE_PARAM_STYLE_VERSION       0
#define COM_ROUTINE_PARAM_STYLE_VERSION_1             1

// Routine parallelism attribute
enum ComRoutineParallelism { COM_ROUTINE_NO_PARALLELISM
                           , COM_ROUTINE_ANY_PARALLELISM
                           };

#define COM_ROUTINE_NO_PARALLELISM_LIT              "NO"
#define COM_ROUTINE_ANY_PARALLELISM_LIT             "AP"

// Routine security attribute for definer/invoker rights
enum ComRoutineExternalSecurity { COM_ROUTINE_EXTERNAL_SECURITY_INVOKER // the default
                                , COM_ROUTINE_EXTERNAL_SECURITY_DEFINER
                                , COM_ROUTINE_EXTERNAL_SECURITY_IMPLEMENTATION_DEFINED
                                };

#define COM_ROUTINE_EXTERNAL_SECURITY_INVOKER_LIT                "I "
#define COM_ROUTINE_EXTERNAL_SECURITY_DEFINER_LIT                "D "
#define COM_ROUTINE_EXTERNAL_SECURITY_IMPLEMENTATION_DEFINED_LIT "X "

// Routine pass through input value type: either TEXT or BINARY
enum ComRoutinePassThroughInputType { COM_ROUTINE_PASS_THROUGH_INPUT_TEXT_TYPE
                                    , COM_ROUTINE_PASS_THROUGH_INPUT_BINARY_TYPE
                                    };

#define COM_ROUTINE_PASS_THROUGH_INPUT_TEXT_TYPE_LIT             "TEXT"
#define COM_ROUTINE_PASS_THROUGH_INPUT_BINARY_TYPE_LIT           "BINARY"

// Do not change the following order of definitions
// because they are used for indexing into an array.
enum ComRoutinePTIAttrKind { COM_ROUTINE_PTI_ATTR_KIND_PASS_THROUGH_INPUT_TYPE
                           , COM_ROUTINE_PTI_ATTR_KIND_VALUE_ENCODING_VERSION
                           , COM_ROUTINE_PTI_ATTR_KIND_UNKNOWN
};

enum ComRoutinePTIAttrValueKind { COM_ROUTINE_PTI_ATTR_VALUE_KIND_WORD
                                , COM_ROUTINE_PTI_ATTR_VALUE_KIND_NUMBER
                                , COM_ROUTINE_PTI_ATTR_VALUE_KIND_UNKNOWN
};

#define COM_ROUTINE_PTI_ATTR_NAME_TYPE_LIT                       "TYPE="
#define COM_ROUTINE_PTI_ATTR_NAME_ENCODED_LIT                    "ENCODED="

enum ComUdrParamFlags
{
  UDR_PARAM_IN           = 0x0001,  // For IN and INOUT parameters
  UDR_PARAM_OUT          = 0x0002,  // For OUT and INOUT parameters
  UDR_PARAM_NULLABLE     = 0x0004,  // The parameter type is nullable
  UDR_PARAM_LM_OBJ_TYPE  = 0x0008   // If set the Language Manager will
                                    // map the SQL type to an external type
                                    // using its "object mapping" instead of
                                    // the default mapping. This allows, for
                                    // example, the SQL INTEGER type to map
                                    // to either int or java.lang.Integer in
                                    // Java.
};

enum ComUdrFlags
{
  UDR_ISOLATE            = 0x0001,  // Cannot run in priv mode
  UDR_CALL_ON_NULL       = 0x0002,  // OK to invoke if an input is NULL
  UDR_EXTRA_CALL         = 0x0004,  // UDR expects a cleanup call
  UDR_FINAL_CALL         = UDR_EXTRA_CALL,  // FINAL CALL and EXTRA CALL
                                            // mean the same thing. EXTRA
                                            // CALL is deprecated.
  UDR_DETERMINISTIC      = 0x0008,  // Always same outputs given same inputs
  UDR_LM_NOLOAD          = 0x0010,  // Don't load Language Manager at startup
  UDR_RESETSTATS         = 0x0020,  // Reset UDR Server statistics
  UDR_RESULT_SET         = 0x0040,  // Differentiate TDB/TCB for result sets
  UDR_TMUDF              = 0x0080  // This is a table mapping udf
};

enum ComRoutineSQLAccess { COM_UNKNOWN_ROUTINE_SQL_ACCESS
                         , COM_NO_SQL
                         , COM_CONTAINS_SQL
                         , COM_READS_SQL
                         , COM_MODIFIES_SQL
                         };

#define COM_UNKNOWN_ROUTINE_SQL_ACCESS_LIT          "  "
#define COM_NO_SQL_LIT                              "N "
#define COM_CONTAINS_SQL_LIT                        "C "
#define COM_READS_SQL_LIT                           "R "
#define COM_MODIFIES_SQL_LIT                        "M "

enum ComRoutineTransactionAttributes { COM_UNKNOWN_ROUTINE_TRANSACTION_ATTRIBUTE
                                     , COM_NO_TRANSACTION_REQUIRED
                                     , COM_TRANSACTION_REQUIRED
                                     };

#define COM_UNKNOWN_ROUTINE_TRANSACTION_ATTRIBUTE_LIT "  "
#define COM_NO_TRANSACTION_REQUIRED_LIT               "NO"
#define COM_TRANSACTION_REQUIRED_LIT                  "RQ"

enum ComRoutineType { COM_UNKNOWN_ROUTINE_TYPE
                    , COM_PROCEDURE_TYPE
                    , COM_SCALAR_UDF_TYPE
                    , COM_TABLE_UDF_TYPE
                    , COM_UNIVERSAL_UDF_TYPE
                    , COM_ACTION_UDF_TYPE
                    };

#define COM_UNKNOWN_ROUTINE_TYPE_LIT                "  "
#define COM_PROCEDURE_TYPE_LIT                      "P "
#define COM_SCALAR_UDF_TYPE_LIT                     "F "
#define COM_TABLE_UDF_TYPE_LIT                      "T "
#define COM_UNIVERSAL_UDF_TYPE_LIT                  "U "
#define COM_ACTION_UDF_TYPE_LIT                     "AC"

// Routine execution mode
enum ComRoutineExecutionMode { COM_ROUTINE_FAST_EXECUTION
                             , COM_ROUTINE_SAFE_EXECUTION
                             };

#define COM_ROUTINE_FAST_EXECUTION_LIT              "FA"
#define COM_ROUTINE_SAFE_EXECUTION_LIT              "SF"

enum ComUdfOptimizationHintKind { COM_UDF_INITIAL_CPU_COST
                                , COM_UDF_INITIAL_IO_COST
                                , COM_UDF_INITIAL_MESSAGE_COST
                                , COM_UDF_NORMAL_CPU_COST
                                , COM_UDF_NORMAL_IO_COST
                                , COM_UDF_NORMAL_MESSAGE_COST
                                , COM_UDF_NUMBER_OF_UNIQUE_OUTPUT_VALUES
                                };

enum ComUudfParamKind { COM_UUDF_PARAM_OMITTED
                      , COM_UUDF_PARAM_ACTION
                      , COM_UUDF_PARAM_SAS_FORMAT
                      , COM_UUDF_PARAM_SAS_LOCALE
                      , COM_UUDF_PARAM_SAS_MODEL_INPUT_TABLE
                      };

#define  COM_UUDF_PARAM_OMITTED_LIT                 ""
#define  COM_UUDF_PARAM_ACTION_LIT                  "ACTION"
#define  COM_UUDF_PARAM_SAS_FORMAT_LIT              "SAS_FORMAT"
#define  COM_UUDF_PARAM_SAS_LOCALE_LIT              "SAS_LOCALE"
#define  COM_UUDF_PARAM_SAS_MODEL_INPUT_TABLE_LIT   "SAS_MODEL_INPUT_TABLE"

enum ComStoreOption { COM_UNKNOWN_STORE_OPTION
                    , COM_ENTRY_ORDER_STORE_OPTION
                    , COM_KEY_COLUMN_LIST_STORE_OPTION
                    , COM_NONDROPPABLE_PK_STORE_OPTION
                    , COM_RELATIVE_ORDER_STORE_OPTION
                    };

// Exception table enums
enum ComExceptionTableType { COM_UNKNOWN_EXCEPTION_TABLE_TYPE
                           , COM_VALIDATE_EXCEPTION_TABLE_TYPE
                           };

#define COM_UNKNOWN_EXCEPTION_TABLE_TYPE_LIT        "  "
#define COM_VALIDATE_EXCEPTION_TABLE_TYPE_LIT       "VD"

// [Distribution] Literals & defines for replication rules
enum ComReplicationRule { COM_UNKNOWN_REPLICATION,
                          COM_AUTOMATIC_REPLICATION,
                          COM_MANUAL_REPLICATION};

#define COM_UNKNOWN_REPLICATION_LIT                "  "
#define COM_AUTOMATIC_REPLICATION_LIT              "A "
#define COM_MANUAL_REPLICATION_LIT                 "M "

// [Distribution/Versioning] Literals & defines for future schema level operations
enum ComSchemaOperation { COM_NO_SCHEMA_OPERATION,
                          COM_UPGRADE_OPERATION,
                          COM_DOWNGRADE_OPERATION,
                          COM_VOLATILE_SCHEMA_OPERATION,
                          COM_DISABLE_CREATE_OPERATION,
                          COM_UNKNOWN_SCHEMA_OPERATION};

#define COM_NO_SCHEMA_OPERATION_LIT                "  "
#define COM_UPGRADE_OPERATION_LIT                  "UG"
#define COM_DOWNGRADE_OPERATION_LIT                "DG"
#define COM_VOLATILE_SCHEMA_OPERATION_LIT          "VS"
#define COM_DISABLE_CREATE_OPERATION_LIT           "DC"
#define COM_UNKNOWN_SCHEMA_OPERATION_LIT           "??"

//Schema Type
enum ComSchemaType { COM_USER_TYPE,
                     COM_PUBLIC_TYPE,
                     COM_SYSTEM_TYPE};

#define COM_USER_TYPE_LIT       "U"
#define COM_PUBLIC_TYPE_LIT     "P"
#define COM_SYSTEM_TYPE_LIT     "S"

//Schema Class
enum ComSchemaClass { COM_SCHEMA_CLASS_UNKNOWN = 2,
                      COM_SCHEMA_CLASS_PRIVATE = 3,
                      COM_SCHEMA_CLASS_SHARED = 4,
                      COM_SCHEMA_CLASS_DEFAULT = 5
                    };

enum ComSQLDataType { COM_UNKNOWN_SDT
                    , COM_CHARACTER_SDT
                    , COM_VARCHAR_SDT
                    , COM_LONG_VARCHAR_SDT
                    , COM_BPINT_UNSIGNED_SDT
                    , COM_NUMERIC_SIGNED_SDT
                    , COM_NUMERIC_UNSIGNED_SDT
                    , COM_TINYINT_SIGNED_SDT
                    , COM_TINYINT_UNSIGNED_SDT
                    , COM_SMALLINT_SIGNED_SDT
                    , COM_SMALLINT_UNSIGNED_SDT
                    , COM_INTEGER_SIGNED_SDT
                    , COM_INTEGER_UNSIGNED_SDT
                    , COM_LARGEINT_SIGNED_SDT
                    , COM_LARGEINT_UNSIGNED_SDT
                    , COM_FLOAT_SDT
                    , COM_REAL_SDT
                    , COM_DOUBLE_SDT
                    , COM_DECIMAL_SIGNED_SDT
                    , COM_DECIMAL_UNSIGNED_SDT
                    , COM_LARGE_DECIMAL_SIGNED_SDT
                    , COM_LARGE_DECIMAL_UNSIGNED_SDT
		    , COM_BLOB_SDT
		    , COM_CLOB_SDT
		    , COM_BOOLEAN_SDT
                    , COM_DATETIME_SDT
                    , COM_TIMESTAMP_SDT
                    , COM_DATE_SDT
                    , COM_TIME_SDT
                    , COM_INTERVAL_SDT
                    };

#define COM_UNKNOWN_SDT_LIT                    "                  "
#define COM_CHARACTER_SDT_LIT                  "CHARACTER         "
#define COM_VARCHAR_SDT_LIT                    "VARCHAR           "
#define COM_LONG_VARCHAR_SDT_LIT               "LONG VARCHAR      "
#define COM_NUMERIC_SIGNED_SDT_LIT             "SIGNED NUMERIC    "
#define COM_NUMERIC_UNSIGNED_SDT_LIT           "UNSIGNED NUMERIC  "
#define COM_TINYINT_SIGNED_SDT_LIT             "SIGNED TINYINT   "
#define COM_TINYINT_UNSIGNED_SDT_LIT           "UNSIGNED TINYINT "
#define COM_SMALLINT_SIGNED_SDT_LIT            "SIGNED SMALLINT   "
#define COM_SMALLINT_UNSIGNED_SDT_LIT          "UNSIGNED SMALLINT "
#define COM_INTEGER_SIGNED_SDT_LIT             "SIGNED INTEGER    "
#define COM_INTEGER_UNSIGNED_SDT_LIT           "UNSIGNED INTEGER  "
#define COM_BPINT_UNSIGNED_SDT_LIT             "UNSIGNED BP INT   "
#define COM_LARGEINT_SIGNED_SDT_LIT            "SIGNED LARGEINT   "
#define COM_LARGEINT_UNSIGNED_SDT_LIT          "UNSIGNED LARGEINT "
#define COM_FLOAT_SDT_LIT                      "FLOAT             "
#define COM_REAL_SDT_LIT                       "REAL              "
#define COM_DOUBLE_SDT_LIT                     "DOUBLE            "
#define COM_DECIMAL_SIGNED_SDT_LIT             "SIGNED DECIMAL    "
#define COM_DECIMAL_UNSIGNED_SDT_LIT           "UNSIGNED DECIMAL  "
#define COM_DATETIME_SDT_LIT                   "DATETIME          "
#define COM_TIMESTAMP_SDT_LIT                  "TIMESTAMP         "
#define COM_DATE_SDT_LIT                       "DATE              "
#define COM_TIME_SDT_LIT                       "TIME              "
#define COM_INTERVAL_SDT_LIT                   "INTERVAL          "
#define COM_BLOB_SDT_LIT                       "BLOB              "
#define COM_CLOB_SDT_LIT                       "CLOB              "
#define COM_BOOLEAN_SDT_LIT                    "BOOLEAN           "

enum ComViewCheckOption { COM_UNKNOWN_CHECK_OPTION
                        , COM_CASCADE_CHECK_OPTION
                        , COM_LOCAL_CHECK_OPTION
                        , COM_NONE_CHECK_OPTION
                        };

#define COM_UNKNOWN_CHECK_OPTION_LIT           "  "
#define COM_CASCADE_CHECK_OPTION_LIT           "C "
#define COM_LOCAL_CHECK_OPTION_LIT             "L "
#define COM_NONE_CHECK_OPTION_LIT              "N "

// Added in v2500
enum ComViewType { COM_UNKNOWN_VIEW_TYPE
                 , COM_USER_VIEW_TYPE
                 , COM_SYSTEM_VIEW_TYPE
                 };

#define COM_UNKNOWN_VIEW_TYPE_LIT              "  "
#define COM_USER_VIEW_TYPE_LIT                 "UV"
#define COM_SYSTEM_VIEW_TYPE_LIT               "SV"

enum ComAutoRebindOption { COM_UNKNOWN_RBND_OPTION
                         , COM_CUR_DEFAULTS_CUR_DEFINES_RBND_OPTION
                         , COM_STO_DEFAULTS_STO_DEFINES_RBND_OPTION
                         , COM_CUR_DEFAULTS_STO_DEFINES_RBND_OPTION
                         , COM_STO_DEFAULTS_CUR_DEFINES_RBND_OPTION
                         , COM_NONE_RBND_OPTION
                         };

#define COM_UNKNOWN_RBND_OPTION_LIT                       "  "
#define COM_CUR_DEFAULTS_CUR_DEFINES_RBND_OPTION_LIT      "CC"
#define COM_STO_DEFAULTS_STO_DEFINES_RBND_OPTION_LIT      "SS"
#define COM_CUR_DEFAULTS_STO_DEFINES_RBND_OPTION_LIT      "CS"
#define COM_STO_DEFAULTS_CUR_DEFINES_RBND_OPTION_LIT      "SC"
#define COM_NONE_RBND_OPTION_LIT                          "OF"

enum ComPartnStatus { COM_UNKNOWN_PARTN_STATUS
                    , COM_PARTN_AVAILABLE
                    , COM_PARTN_OFFLINE
                    , COM_PARTN_CORRUPT
                    , COM_PARTN_PHANTOM};

#define COM_UNKNOWN_PARTN_STATUS_LIT       "  "
#define COM_PARTN_AVAILABLE_LIT            "AV"
#define COM_PARTN_OFFLINE_LIT              "UO"
#define COM_PARTN_CORRUPT_LIT              "UC"
#define COM_PARTN_PHANTOM_LIT              "PH"

enum ComUtilOperation { COM_UNKNOWN_UTIL
                      , COM_UTIL_BACKUP
                      , COM_UTIL_DROP_LABEL
                      , COM_UTIL_DUP
                      , COM_UTIL_EXPORT
                      , COM_UTIL_IMPORT
                      , COM_UTIL_MODIFY_TABLE
                      , COM_UTIL_MODIFY_INDEX
                      , COM_UTIL_POPULATE_INDEX
                      , COM_UTIL_PURGEDATA
                      , COM_UTIL_RECOVER
                      , COM_UTIL_RESTORE
                      , COM_UTIL_UPDATE_STATISTICS
                      , COM_UTIL_REFRESH
                      , COM_UTIL_UPDATE_PARTITION_METADATA
                      , COM_UTIL_ALL_METADATA_UPGRADE
                      , COM_UTIL_ALL_METADATA_DOWNGRADE
                      , COM_UTIL_TRANSFORM
                      , COM_UTIL_VALIDATE
                      };

#define COM_UNKNOWN_UTIL_LIT            "  "
#define COM_UTIL_BACKUP_LIT             "BK"
#define COM_UTIL_DROP_LABEL_LIT         "DL"
#define COM_UTIL_DUP_LIT                "DP"
#define COM_UTIL_EXPORT_LIT             "EX"
#define COM_UTIL_IMPORT_LIT             "IM"
#define COM_UTIL_MODIFY_TABLE_LIT       "MT"
#define COM_UTIL_MODIFY_INDEX_LIT       "MI"
#define COM_UTIL_POPULATE_INDEX_LIT     "PI"
#define COM_UTIL_PURGEDATA_LIT          "PD"
#define COM_UTIL_RECOVER_LIT            "RC"
#define COM_UTIL_RESTORE_LIT            "RS"
#define COM_UTIL_UPDATE_STATISTICS_LIT  "US"
#define COM_UTIL_REFRESH_LIT            "RF"
#define COM_UTIL_TRANSFORM_LIT          "TR"
#define COM_UTIL_UPDATE_PARTITION_METADATA_LIT "UP"
#define COM_UTIL_ALL_METADATA_UPGRADE_LIT  "MU"
#define COM_UTIL_ALL_METADATA_DOWNGRADE_LIT  "MD"
#define COM_UTIL_VALIDATE_LIT              "VA"


enum ComDdlStatus { COM_UNKNOWN_DDL_STATUS
                  , COM_NO_DDL_IN_PROGRESS
                  , COM_ROW_HIDING
                  , COM_KEY_RANGE_CHECKING };

#define COM_UNKNOWN_DDL_STATUS_LIT      "  "
#define COM_NO_DDL_IN_PROGRESS_LIT      "N "
#define COM_ROW_HIDING_LIT              "RH"
#define COM_KEY_RANGE_CHECKING_LIT      "KR"

// Support for the NOT DROPPABLE and INSERT_ONLY attributes
enum ComTableFeature  { COM_UNKNOWN_TABLE_FEATURE
                      , COM_DROPPABLE
                      , COM_DROPPABLE_INSERT_ONLY
                      , COM_NOT_DROPPABLE
                      , COM_NOT_DROPPABLE_INSERT_ONLY };

#define COM_UNKNOWN_TABLE_FEATURE_LIT        "  "
#define COM_DROPPABLE_LIT                    "Y "
#define COM_DROPPABLE_INSERT_ONLY_LIT        "YI"
#define COM_NOT_DROPPABLE_LIT                "N "
#define COM_NOT_DROPPABLE_INSERT_ONLY_LIT    "NI"


enum ComDiskFileFormat { UNKNOWN = 0,
             SQLMP   = 100,       // MP
             SQLARK  = 200,       // simulator
             SQLMX   = 300        // real MX
                       };

enum ComLobsStorage {
    Lob_Invalid_Storage = 0,
    Lob_Local_File = 1,
    Lob_HDFS_File = 2,
    Lob_HBASE_Table = 3,
    Lob_Cloud_File = 4,
    Lob_Seaquest_Table = 5,
    Lob_MySQL_Table = 6,
    Lob_InMemory_File = 7,
    Lob_External_HDFS_File = 8,
    Lob_External_HBASE_Table = 9,
    Lob_External_Local_File = 10,
    Lob_Empty = 11
};

// for the TRANSFORM utility - equivalent definitions in catapirequest.h
enum ComTransformDependent { COM_TR_DROP_DEPENDENT
                           , COM_TR_CASCADE_DEPENDENT
                           , COM_TR_RECREATE_DEPENDENT
                           , COM_TR_KEEP_DEPENDENT };

enum ComPrivilegeChecks { COM_PRIV_CHECK_PASS = 0,
                          COM_PRIV_NO_CHECK   = 1,
                          COM_PRIV_CHECK_FAIL = 2 };
        
// for serialization of primary keys
enum ComPkeySerialization
  { COM_SER_NOT_SPECIFIED =  0,    // not specified, will be set based on
                                   // the table type
    COM_SERIALIZED        =  1,    // pkey is serialized
    COM_NOT_SERIALIZED    =  2     // pkey is not serialized
  };
                  
// DDL Operation literals

#define COM_OP_NONE_LIT                            "  "
#define COM_OP_ALTER_CATALOG_LIT                   "AC"
#define COM_OP_ALTER_INDEX_LIT                     "AI"
#define COM_OP_ALTER_LIBRARY_LIT                   "AL"
#define COM_OP_ALTER_MV_LIT                        "AM"
#define COM_OP_ALTER_MV_GROUP_LIT                  "AG"
#define COM_OP_ALTER_PROCEDURE_LIT                 "AP"
#define COM_OP_ALTER_ROUTINE_LIT                   "AR"
#define COM_OP_ALTER_ROUTINE_ACTION_LIT            "AA"
#define COM_OP_ALTER_TABLE_LIT                     "AB"
#define COM_OP_ALTER_TRIGGER_LIT                   "AT"
#define COM_OP_ALTER_VIEW_LIT                      "AV"
#define COM_OP_CREATE_CATALOG_LIT                  "CC"
#define COM_OP_CREATE_COMPONENT_LIT                "CN"
#define COM_OP_CREATE_COMPONENT_PRIVILEGE_LIT      "CO"
#define COM_OP_CREATE_INDEX_LIT                    "CI"
#define COM_OP_CREATE_LIBRARY_LIT                  "CL"
#define COM_OP_CREATE_MV_LIT                       "CM"
#define COM_OP_CREATE_MV_GROUP_LIT                 "CG"
#define COM_OP_CREATE_PROCEDURE_LIT                "CP"
#define COM_OP_CREATE_ROLE_LIT                     "CE"
#define COM_OP_CREATE_ROUTINE_LIT                  "CR"
#define COM_OP_CREATE_ROUTINE_ACTION_LIT           "CA"
#define COM_OP_CREATE_SCHEMA_LIT                   "CH"
#define COM_OP_CREATE_TABLE_LIT                    "CB"
#define COM_OP_CREATE_TRIGGER_LIT                  "CT"
#define COM_OP_CREATE_VIEW_LIT                     "CV"
#define COM_OP_DROP_CATALOG_LIT                    "DC"
#define COM_OP_DROP_COMPONENT_LIT                  "DN"
#define COM_OP_DROP_COMPONENT_PRIVILEGE_LIT        "DO"
#define COM_OP_DROP_INDEX_LIT                      "DI"
#define COM_OP_DROP_LIBRARY_LIT                    "DL"
#define COM_OP_DROP_MV_LIT                         "DM"
#define COM_OP_DROP_MV_GROUP_LIT                   "DG"
#define COM_OP_DROP_PROCEDURE_LIT                  "DP"
#define COM_OP_DROP_ROLE_LIT                       "DE"
#define COM_OP_DROP_ROUTINE_LIT                    "DR"
#define COM_OP_DROP_ROUTINE_ACTION_LIT             "DA"
#define COM_OP_DROP_SCHEMA_LIT                     "DH"
#define COM_OP_DROP_TABLE_LIT                      "DB"
#define COM_OP_DROP_TRIGGER_LIT                    "DT"
#define COM_OP_DROP_VIEW_LIT                       "DV"
#define COM_OP_REGISTER_COMPONENT_LIT              "RC"
#define COM_OP_UNREGISTER_COMPONENT_LIT            "UC"

// DDL Suboperation literals
#define COM_SUBOP_NONE_LIT                          "  "
#define COM_SUBOP_ADD_COLUMN_LIT                    "A "
#define COM_SUBOP_ADD_CHECK_CONSTRAINT_LIT          "AC"
#define COM_SUBOP_ADD_INFORMATION_LIT               "AD"
#define COM_SUBOP_ADD_RI_CONSTRAINT_LIT             "AF"
#define COM_SUBOP_ADD_PK_CONSTRAINT_LIT             "AP"
#define COM_SUBOP_ALTER_ATTRIBUTE_LIT               "AT"
#define COM_SUBOP_ADD_UNIQUE_CONSTRAINT_LIT         "AU"
#define COM_SUBOP_ALTER_COLUMN_SG_OPTION_LIT        "CG"
#define COM_SUBOP_ALTER_COLUMN_RECALIBRATE_LIT      "CR"
#define COM_SUBOP_CASCADE_LIT                       "CS"
#define COM_SUBOP_CASCADE_INVALIDATE_LIT            "CI"
#define COM_SUBOP_COMPILE_LIT                       "CM"
#define COM_SUBOP_DROP_CHECK_CONSTRAINT_LIT         "DC"
#define COM_SUBOP_DROP_RI_CONSTRAINT_LIT            "DF"
#define COM_SUBOP_DISABLE_LIT                       "DI"
#define COM_SUBOP_DROP_PK_CONSTRAINT_LIT            "DP"
#define COM_SUBOP_DROP_UNIQUE_CONSTRAINT_LIT        "DU"
#define COM_SUBOP_ENABLE_LIT                        "EN"
#define COM_SUBOP_REMOVE_INFORMATION_LIT            "RM"
#define COM_SUBOP_RENAME_LIT                        "RN"
#define COM_SUBOP_RESTRICT_LIT                      "RS"
#define COM_SUBOP_UNIQUE_LIT                        "UQ"

// Audit object literals
#define COM_AUD_UNKNOWN_OBJECT_LIT                  "  "
#define COM_AUD_BASE_TABLE_OBJECT_LIT               COM_BASE_TABLE_OBJECT_LIT
#define COM_AUD_CATALOG_OBJECT_LIT                  "CA"
#define COM_AUD_COMPONENT_OBJECT_LIT                "CO"
#define COM_AUD_COMPONENT_PRIVILEGE_OBJECT_LIT      "CP"
#define COM_AUD_INDEX_OBJECT_LIT                    COM_INDEX_OBJECT_LIT
#define COM_AUD_LIBRARY_OBJECT_LIT                  COM_LIBRARY_OBJECT_LIT
#define COM_AUD_MV_OBJECT_LIT                       COM_MV_OBJECT_LIT
#define COM_AUD_MVRG_OBJECT_LIT                     COM_MVRG_OBJECT_LIT
#define COM_AUD_ROLE_OBJECT_LIT                     "RO"
#define COM_AUD_ROUTINE_ACTION_OBJECT_LIT           "RA"
#define COM_AUD_SCHEMA_OBJECT_LIT                   "SC"
#define COM_AUD_STORED_PROCEDURE_OBJECT_LIT         COM_STORED_PROCEDURE_OBJECT_LIT
#define COM_AUD_TRIGGER_OBJECT_LIT                  COM_TRIGGER_OBJECT_LIT
#define COM_AUD_USER_DEFINED_ROUTINE_OBJECT_LIT     COM_USER_DEFINED_ROUTINE_OBJECT_LIT
#define COM_AUD_VIEW_OBJECT_LIT                     COM_VIEW_OBJECT_LIT

// for parsing and implementing authentication option for Register User
enum ComAuthenticationType{ 
   COM_UNKNOWN_AUTH,
   COM_PRIMARY_AUTH,
   COM_SECONDARY_AUTH,
   COM_DEFAULT_AUTH
};
// Security Audit Logging Object Changes Operations Literals
#define COM_DBS_OBJ_CHGS_CREATE_TABLE_LIT                       "CT"

// Security Audit Logging Object-specific Object Subtypes
#define COM_DBS_OBJ_CHGS_NO_SUBTYPE_LIT                         "NS"

// Security Audit Logging User Management Operations Literals
#define COM_DBS_USER_MGMT_ALTER_USER_LIT                        "AU"
#define COM_DBS_USER_MGMT_ALTER_USER_SET_IMMUTABLE_LIT          "SI"
#define COM_DBS_USER_MGMT_ALTER_USER_RESET_IMMUTABLE_LIT        "RI"
#define COM_DBS_USER_MGMT_ALTER_USER_SET_LOGON_ROLE_LIT         "LR"
#define COM_DBS_USER_MGMT_ALTER_USER_SET_EXTERNAL_NAME_LIT      "EN"
#define COM_DBS_USER_MGMT_ALTER_USER_SET_IS_VALID_USER_LIT      "IV" // online
#define COM_DBS_USER_MGMT_ALTER_USER_SET_IS_NOT_VALID_USER_LIT  "NV" // offline
#define COM_DBS_USER_MGMT_ALTER_USER_SET_AUTH_LIT               "AT"
#define COM_DBS_USER_MGMT_ALTER_USER_SET_UNKNOWN_SUB_OP_LIT     "UN"
#define COM_DBS_USER_MGMT_REGISTER_USER_LIT                     "RU"
#define COM_DBS_USER_MGMT_UNREGISTER_USER_LIT                   "UR"
#define COM_DBS_USER_MGMT_REGISTER_NEO_ROLE_LIT                 "NR"
#define COM_DBS_USER_MGMT_CREATE_ROLE_LIT                       "CR"
#define COM_DBS_USER_MGMT_DROP_ROLE_LIT                         "DR"
#define COM_DBS_USER_MGMT_GRANT_ROLE_LIT                        "GR"
#define COM_DBS_USER_MGMT_REVOKE_ROLE_LIT                       "RR"
#define COM_DBS_USER_MGMT_WITH_GRANT_LIT                        "WG"
#define COM_DBS_USER_MGMT_WITHOUT_GRANT_LIT                     "NG"

// Boolean Literals
#define COM_DBS_SUCCEED_LIT    "S"
#define COM_DBS_FAIL_LIT       "F"
#define COM_DBS_YES_LIT        "Y"
#define COM_DBS_NO_LIT         "N"

// used with removeNATable for QI support
enum ComQiScope 
  {
    REMOVE_FROM_ALL_USERS = 100,
    REMOVE_MINE_ONLY
  };


//
// (Maximum) size of TEXT.TEXT metadata column in bytes (for NSK) or NAWchars (for SeaQuest)
//

#ifndef COM_TEXT__TEXT__MD_COL_MAX_SIZE
#define COM_TEXT__TEXT__MD_COL_MAX_SIZE 3000
#endif // ! defined(COM_TEXT__TEXT__MD_COL_MAX_SIZE)

// max size 16Mb
#define MAX_CHAR_COL_LENGTH_IN_BYTES 16777216
#define MAX_CHAR_COL_LENGTH_IN_BYTES_STR "16777216"

enum BMOQuotaRatio 
 {
    NO_RATIO = -1,
    MIN_QUOTA = 0,
    MAX_QUOTA = 1 
 };

//
// Definition of class ComUID
//

class ComUID
{
  friend void   print_ComUID_with_text(FILE *fp, char *text, ComUID value);
  friend ComUID read_ComUID_with_text(FILE *fp, char *text);
  friend ostream & operator<<(ostream &s, const ComUID &uid);

 public:
  // constructors
  ComUID()
  {
    data = Int64(0L);
  }

 ComUID(const Int64 num)
  {
    data = num;
  }

  // ---------------------------------------------------------------------
  // Compare.
  // ---------------------------------------------------------------------
  short operator==(const ComUID& value) const
  {
    return (data == value.data);
  }

  short operator!=(const ComUID& value) const
  {
    return (data != value.data);
  }

  short operator<(const ComUID& value) const
  {
    return (data < value.data);
  }

  short operator<=(const ComUID& value) const
  {
    return (data <= value.data);
  }

  short operator>(const ComUID& value) const
  {
    return (data > value.data);
  }

  short operator>=(const ComUID& value) const
  {

    return (data >= value.data);
  }


  void  make_UID();

  ComBoolean is_valid_UID() const
  {
    if (this->data == Int64(Lng32(0)))
      return FALSE;
    else
      return TRUE;
  } ;

  Int64 get_value() const
  {
    return data;
  } ;

  Int64 getKey() const
  {
    return data;
  } ;



  Int64 castToInt64()
  {
    return data;
  }

  inline const Int64 castToInt64() const
  {
    return data;
  }

  void convertTo19BytesFixedWidthStringWithZeroesPrefix (ComString &out) const;

  protected:
    Int64 data;

};

Int64  ComSmallDef_local_GetTimeStamp();

void   print_ComUID_with_text(FILE *fp, char *text, ComUID value);
ComUID read_ComUID_with_text(FILE *fp, char *text);
ostream & operator<<(ostream &s, const ComUID &uid);

const char* comObjectTypeLit(ComObjectType objType);
const char* comObjectTypeName(ComObjectType objType);

#endif // COMSMALLDEFS_H
