Feature Matrix
This chapter briefly describes the features added to each major version.
Architecture
System Architecture
The following is a feature matrix for system architecture.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
Shared Nothing Cluster | X | O | O | O | O |
DA (Direct Attach) | O | O | O | O | O |
JDBC DA (Direct Attach) | X | O | O | O | O |
C/S (Client/Server) Dedicated | O | O | O | O | O |
C/S (Client/Server) Shared | O | O | O | O | O |
multi-process applications | O | O | O | O | O |
multi-threaded applications | O | O | O | O | O |
Linux platform | O | O | O | O | O |
HP platform | O | O | O | O | O |
AIX platform | O | O | O | O | O |
Windows Client Platform | O | O | O | O | O |
CDC(Change Data Capture) replication | O | O | O | O | O |
CDC replication with log mirror | O | O | O | O | O |
multi-level start up | O | O | O | O | O |
parallel database loading | O | O | O | O | O |
parallel index build | O | O | O | O | O |
SQL plan cache | O | O | O | O | O |
IPC | X | X | X | O | O |
Storage Internal
The following is a feature matrix for storage internal.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
memory dictionary tablespace | O | O | O | O | O |
memory data tablespace | O | O | O | O | O |
memory undo tablespace | O | O | O | O | O |
memory temporary tablespace | O | O | O | O | O |
memory bitmap data segment | O | O | O | O | O |
memory bitmap undo segment | O | O | O | O | O |
memory bitmap instant segment | O | O | O | O | O |
memory heap table | O | O | O | O | O |
memory instant table | O | O | O | O | O |
memory B-tree index | O | O | O | O | O |
memory instant B-tree | O | O | O | O | O |
memory instant hash | O | O | O | O | O |
global secondary index | X | O | O | O | O |
disk data tablespace | X | X | O | O | O |
disk bitmap data segment | X | X | O | O | O |
disk B-tree index | X | X | O | O | O |
disk global secondary index | X | X | O | O | O |
Transaction Control
The following is a feature matrix for transaction control.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
CDS(Concurrency Data Store) database mode | O | O | O | O | O |
TDS(Transactional Data Store) database mode | O | O | O | O | O |
read-only database | O | O | O | O | O |
read/write database | O | O | O | O | O |
flat transaction | O | O | O | O | O |
distributed transaction | O | O | O | O | O |
read-only transaction | O | O | O | O | O |
read/write transaction | O | O | O | O | O |
READ COMMITTED isolation level | O | O | O | O | O |
SERIALIZABLE isolation level with SELECT FOR UPDATE | O | O | O | O | O |
MVCC(Multi Version Concurrency Control) | O | O | O | O | O |
multi-version read consistency | O | O | O | O | O |
multi-statement consistent read | O | O | O | O | O |
implicit lock for DML | O | O | O | O | O |
writer don't blocks readers | O | O | O | O | O |
row-level locking | O | O | O | O | O |
deadlock detection | O | O | O | O | O |
deadlock resolution | O | O | O | O | O |
lock granularity | O | O | O | O | O |
read lock | O | O | O | O | O |
write lock | O | O | O | O | O |
intention lock | O | O | O | O | O |
WAL(Write Ahead Logging) | O | O | O | O | O |
repeat history | O | O | O | O | O |
restart recovery | O | O | O | O | O |
circular logging | O | O | O | O | O |
buffered logging | O | O | O | O | O |
logging group | O | O | O | O | O |
supplemental logging | O | O | O | O | O |
mirrored logging | O | O | O | O | O |
synchronous commit | O | O | O | O | O |
asynchronous commit | O | O | O | O | O |
grouped commit | O | O | O | O | O |
total rollback | O | O | O | O | O |
implicit statement rollback | O | O | O | O | O |
savepoint management | O | O | O | O | O |
Backup & Recovery
The following is a feature matrix for backup & recovery.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
off-line backup | O | O | O | O | O |
on-line backup | O | O | O | O | O |
full backup | O | O | O | O | O |
incremental backup | O | O | O | O | O |
complete recovery | O | O | O | O | O |
incomplete recovery | O | O | O | O | O |
auto instance recovery | O | O | O | O | O |
tablespace recovery | O | O | O | O | O |
file recovery | O | O | O | O | O |
change tracking | X | X | O | O | O |
Database Information
DICTIONARY_SCHEMA Schema
The following is a feature matrix for DICTIONARY_SCHEMA schema.
Family | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Views of ALL_family | ALL_ALL_TABLES | O | O | O | O | O |
ALL_ARGUMENTS | X | O | O | O | O | |
ALL_CATALOG | O | O | O | O | O | |
ALL_CLUSTER_TABLES | X | O | O | O | O | |
ALL_COL_COMMENTS | O | O | O | O | O | |
ALL_COL_PLACE | X | X | X | X | X | |
ALL_COL_PRIVS | O | O | O | O | O | |
ALL_COL_PRIVS_MADE | O | O | O | O | O | |
ALL_COL_PRIVS_RECD | O | O | O | O | O | |
ALL_CONSTRAINTS | O | O | O | O | O | |
ALL_CONS_COLUMNS | O | O | O | O | O | |
ALL_DB_PRIVS | O | O | O | O | O | |
ALL_DB_PRIVS_MADE | O | O | O | O | O | |
ALL_DB_PRIVS_RECD | O | O | O | O | O | |
ALL_DEPENDENCIES | X | O | O | O | O | |
ALL_GLOBAL_SECONDARY_INDEXES | X | O | O | O | O | |
ALL_GSI_PLACE | X | O | O | O | O | |
ALL_INDEXES | O | O | O | O | O | |
ALL_IND_COLUMNS | O | O | O | O | O | |
ALL_IND_PLACE | X | O | O | O | O | |
ALL_NONSCHEMA_COMMENTS | O | O | O | O | O | |
ALL_OBJECTS | O | O | O | O | O | |
ALL_PACKAGE_PRIVS | X | X | O | O | O | |
ALL_PACKAGE_PRIV_MADE | X | X | O | O | O | |
ALL_PACKAGE_PRIV_RECD | X | X | O | O | O | |
ALL_PROCEDURES | X | O | O | O | O | |
ALL_PROC_PRIVS | X | O | O | O | O | |
ALL_PROC_PRIV_MADE | X | O | O | O | O | |
ALL_PROC_PRIV_RECD | X | O | O | O | O | |
ALL_SCHEMAS | O | O | O | O | O | |
ALL_SCHEMA_PATH | O | O | O | O | O | |
ALL_SCHEMA_PRIVS | O | O | O | O | O | |
ALL_SCHEMA_PRIVS_MADE | O | O | O | O | O | |
ALL_SCHEMA_PRIVS_RECD | O | O | O | O | O | |
ALL_SEQUENCES | O | O | O | O | O | |
ALL_SEQ_PRIVS | O | O | O | O | O | |
ALL_SEQ_PRIVS_MADE | O | O | O | O | O | |
ALL_SEQ_PRIVS_RECD | O | O | O | O | O | |
ALL_SHARD_KEY_COLUMNS | X | O | O | O | O | |
ALL_SOURCE | X | O | O | O | O | |
ALL_SYNONYMS | O | O | O | O | O | |
ALL_TABLES | O | O | O | O | O | |
ALL_TAB_COLS | O | O | O | O | O | |
ALL_TAB_COLUMNS | O | O | O | O | O | |
ALL_TAB_COMMENTS | O | O | O | O | O | |
ALL_TAB_IDENTITY_COLS | O | O | O | O | O | |
ALL_TAB_PLACE | X | O | O | O | O | |
ALL_TAB_SHARDS | X | O | O | O | O | |
ALL_TAB_PRIVS | O | O | O | O | O | |
ALL_TAB_PRIVS_MADE | O | O | O | O | O | |
ALL_TAB_PRIVS_RECD | O | O | O | O | O | |
ALL_TBS_PRIVS | O | O | O | O | O | |
ALL_TBS_PRIVS_MADE | O | O | O | O | O | |
ALL_TBS_PRIVS_RECD | O | O | O | O | O | |
ALL_USERS | O | O | O | O | O | |
ALL_VIEWS | O | O | O | O | O | |
Views of DBA_family | DBA_ALL_TABLES | O | O | O | O | O |
DBA_ARGUMENTS | X | O | O | O | O | |
DBA_CATALOG | O | O | O | O | O | |
DBA_CLUSTER | X | O | O | O | O | |
DBA_CLUSTER_COMMENTS | X | O | O | O | O | |
DBA_CLUSTER_TABLES | X | O | O | O | O | |
DBA_COL_COMMENTS | O | O | O | O | O | |
DBA_COL_PLACE | X | X | X | X | X | |
DBA_COL_PRIVS | O | O | O | O | O | |
DBA_CONSTRAINTS | O | O | O | O | O | |
DBA_CONS_COLUMNS | O | O | O | O | O | |
DBA_DB_PRIVS | O | O | O | O | O | |
DBA_DEPENDENCIES | X | O | O | O | O | |
DBA_EXTENTS | O | O | O | O | O | |
DBA_GLOBAL_SECONDARY_INDEXES | X | O | O | O | O | |
DBA_GSI_PLACE | X | O | O | O | O | |
DBA_INDEXES | O | O | O | O | O | |
DBA_IND_COLUMNS | O | O | O | O | O | |
DBA_IND_PLACE | X | O | O | O | O | |
DBA_NONSCHEMA_COMMENTS | O | O | O | O | O | |
DBA_OBJECTS | O | O | O | O | O | |
DBA_PACKAGE_PRIVS | X | X | O | O | O | |
DBA_PROCEDURES | X | O | O | O | O | |
DBA_PROC_PRIVS | X | O | O | O | O | |
DBA_PROFILES | O | O | O | O | O | |
DBA_RECYCLEBIN | X | X | O | O | O | |
DBA_SCHEMAS | O | O | O | O | O | |
DBA_SCHEMA_PATH | O | O | O | O | O | |
DBA_SCHEMA_PRIVS | O | O | O | O | O | |
DBA_SEQUENCES | O | O | O | O | O | |
DBA_SEQ_PRIVS | O | O | O | O | O | |
DBA_SHARD_KEY_COLUMNS | X | O | O | O | O | |
DBA_SOURCE | X | O | O | O | O | |
DBA_STAT_SYSTEM | X | O | O | O | O | |
DBA_SYNONYMS | O | O | O | O | O | |
DBA_SYS_PRIVS | O | O | O | O | O | |
DBA_TABLES | O | O | O | O | O | |
DBA_TABLESPACES | O | O | O | O | O | |
DBA_TAB_COLS | O | O | O | O | O | |
DBA_TAB_COLUMNS | O | O | O | O | O | |
DBA_TAB_COMMENTS | O | O | O | O | O | |
DBA_TAB_IDENTITY_COLS | O | O | O | O | O | |
DBA_TAB_PLACE | X | O | O | O | O | |
DBA_TAB_PRIVS | O | O | O | O | O | |
DBA_TAB_SHARDS | X | O | O | O | O | |
DBA_TBS_PRIVS | O | O | O | O | O | |
DBA_USERS | O | O | O | O | O | |
DBA_VIEWS | O | O | O | O | O | |
Views of USER_family | USER_ALL_TABLES | O | O | O | O | O |
USER_ARGUMENTS | X | O | O | O | O | |
USER_CATALOG | O | O | O | O | O | |
USER_CLUSTER_TABLES | X | O | O | O | O | |
USER_COL_COMMENTS | O | O | O | O | O | |
USER_COL_PLACE | X | X | X | X | X | |
USER_COL_PRIVS | O | O | O | O | O | |
USER_COL_PRIVS_MADE | O | O | O | O | O | |
USER_COL_PRIVS_RECD | O | O | O | O | O | |
USER_CONSTRAINTS | O | O | O | O | O | |
USER_CONS_COLUMNS | O | O | O | O | O | |
USER_DEPENDENCIES | X | O | O | O | O | |
USER_EXTENTS | O | O | O | O | O | |
USER_GLOBAL_SECONDARY_INDEXES | X | O | O | O | O | |
USER_GSI_PLACE | X | O | O | O | O | |
USER_INDEXES | O | O | O | O | O | |
USER_IND_COLUMNS | O | O | O | O | O | |
USER_IND_PLACE | X | O | O | O | O | |
USER_OBJECTS | O | O | O | O | O | |
USER_PACKAGE_PRIVS | X | X | O | O | O | |
USER_PACKAGE_PRIVS_MADE | X | X | O | O | O | |
USER_PACKAGE_PRIVS_RECD | X | X | O | O | O | |
USER_PROCEDURES | X | O | O | O | O | |
USER_PROC_PRIVS | X | O | O | O | O | |
USER_PROC_PRIVS_MADE | X | O | O | O | O | |
USER_PROC_PRIVS_RECD | X | O | O | O | O | |
USER_RECYCLEBIN | X | X | O | O | O | |
USER_SCHEMAS | O | O | O | O | O | |
USER_SCHEMA_PATH | O | O | O | O | O | |
USER_SCHEMA_PRIVS | O | O | O | O | O | |
USER_SCHEMA_PRIVS_MADE | O | O | O | O | O | |
USER_SCHEMA_PRIVS_RECD | O | O | O | O | O | |
USER_SEQUENCES | O | O | O | O | O | |
USER_SEQ_PRIVS | O | O | O | O | O | |
USER_SEQ_PRIVS_MADE | O | O | O | O | O | |
USER_SEQ_PRIVS_RECD | O | O | O | O | O | |
USER_SHARD_KEY_COLUMNS | X | O | O | O | O | |
USER_SOURCE | X | O | O | O | O | |
USER_SYNONYMS | O | O | O | O | O | |
USER_SYS_PRIVS | O | O | O | O | O | |
USER_TABLES | O | O | O | O | O | |
USER_TABLESPACES | O | O | O | O | O | |
USER_TAB_COLS | O | O | O | O | O | |
USER_TAB_COLUMNS | O | O | O | O | O | |
USER_TAB_COMMENTS | O | O | O | O | O | |
USER_TAB_IDENTITY_COLS | O | O | O | O | O | |
USER_TAB_PLACE | X | O | O | O | O | |
USER_TAB_PRIVS | O | O | O | O | O | |
USER_TAB_PRIVS_MADE | O | O | O | O | O | |
USER_TAB_PRIVS_RECD | O | O | O | O | O | |
USER_TAB_SHARDS | X | O | O | O | O | |
USER_USERS | O | O | O | O | O | |
USER_VIEWS | O | O | O | O | O | |
Other views | AUDIT_POLICIES | X | O | O | O | O |
AUDIT_POLICY_ENABLED | X | O | O | O | O | |
AUDIT_POLICY_OPTIONS | X | O | O | O | O | |
AUDIT_TRAIL | X | O | O | O | O | |
DATABASE_PROPERTIES | O | O | O | O | O | |
DBC_TABLE_TYPE_INFO | O | O | O | O | O | |
DICTIONARY | O | O | O | O | O | |
DICT_COLUMNS | O | O | O | O | O | |
DUAL | O | O | O | O | O | |
IMPLEMENTATION_INFO | O | O | O | O | O | |
IMPLEMENTATION_INFO_BASE | O | O | O | O | O | |
JDBC_CLIENT_PROPS | O | O | O | O | O | |
PRODUCT | O | O | O | O | O | |
SESSION_PRIVS | O | O | O | O | O | |
SUPPLEMENTAL_LOG_TABLE_INFO | O | O | O | O | O | |
Aliased synonym | COLS | O | O | O | O | O |
DICT | O | O | O | O | O | |
IND | O | O | O | O | O | |
OBJ | O | O | O | O | O | |
RECYCLEBIN | X | X | O | O | O | |
SEQ | O | O | O | O | O | |
TABS | O | O | O | O | O |
INFORMATION_SCHEMA Schema
The following is a feature matrix for INFORMATION_SCHEMA schema.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
COLUMNS | O | O | O | O | O |
COLUMN_PRIVILEGES | O | O | O | O | O |
CONSTRAINT_COLUMN_USAGE | O | O | O | O | O |
CONSTRAINT_TABLE_USAGE | O | O | O | O | O |
INFORMATION_SCHEMA_CATALOG_NAME | O | O | O | O | O |
KEY_COLUMN_USAGE | O | O | O | O | O |
MODULES | X | X | O | O | O |
MODULE_BODY | X | X | O | O | O |
MODULE_BODY_MODULE_USAGE | X | X | O | O | O |
MODULE_BODY_ROUTINE_USAGE | X | X | O | O | O |
MODULE_BODY_SEQUENCE_USAGE | X | X | O | O | O |
MODULEBODY_TABLE_USAGE | X | X | O | O | O |
MODULE_MODULE_USAGE | X | X | O | O | O |
MODULE_PRIVILEGES | X | X | O | O | O |
MODULE_ROUTINE_USAGE | X | X | O | O | O |
MODULE_SEQUENCE_USAGE | X | X | O | O | O |
MODULE_TABLE_USAGE | X | X | O | O | O |
PARAMETERS | X | O | O | O | O |
REFERENTIAL_CONSTRAINTS | O | O | O | O | O |
ROUTINES | X | O | O | O | O |
ROUTINE_MODULE_USAGE | X | X | O | O | O |
ROUTINE_PRIVILEGES | X | O | O | O | O |
ROUTINE_ROUTINE_USAGE | X | O | O | O | O |
ROUTINE_SEQUENCE_USAGE | X | O | O | O | O |
ROUTINE_TABLE_USAGE | X | O | O | O | O |
SCHEMATA | O | O | O | O | O |
SEQUENCES | O | O | O | O | O |
SQL_FEATURES | O | O | O | O | O |
SQL_IMPLEMENTATION_INFO | O | O | O | O | O |
SQL_PACKAGES | O | O | O | O | O |
SQL_PARTS | O | O | O | O | O |
SQL_SIZING | O | O | O | O | O |
STATISTICS | O | O | O | O | O |
TABLES | O | O | O | O | O |
TABLE_CONSTRAINTS | O | O | O | O | O |
TABLE_PRIVILEGES | O | O | O | O | O |
USAGE_PRIVILEGES | O | O | O | O | O |
VIEWS | O | O | O | O | O |
VIEW_MODULE_USAGE | X | X | O | O | O |
VIEW_ROUTINE_USAGE | X | O | O | O | O |
VIEW_TABLE_USAGE | O | O | O | O | O |
PERFORMANCE_VIEW_SCHEMA Schema
The following is a feature matrix for PERFORMANCE_VIEW_SCHEMA schema.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
GV$____ | X | O | O | O | O |
V$AGABLE_INFO | X | O | O | O | O |
V$ARCHIVELOG | O | O | O | O | O |
V$AUDITABLE_DB_PRIVILEGES | X | O | O | O | O |
V$AUDITABLE_SYSTEM_ACTIONS | X | O | O | O | O |
V$BACKUP | O | O | O | O | O |
V$BALANCER | O | O | O | O | O |
V$BCH | X | X | O | O | O |
V$BUFFER_STAT | X | X | O | O | O |
V$CLUSTER_DISPATCHER | X | O | O | O | O |
V$CLUSTER_LOCATION | X | O | O | O | O |
V$CLUSTER_MEMBER | X | O | O | O | O |
V$COLUMNS | O | O | O | O | O |
V$CONTROLFILE | O | O | O | O | O |
V$DATAFILE | O | O | O | O | O |
V$DB_CHANGE_TRACKING | X | X | O | O | O |
V$DB_FILE | O | O | O | O | O |
V$DB_PROPERTY | X | X | X | X | O |
V$DISPATCHER | O | O | O | O | O |
V$ERROR_CODE | O | O | O | O | O |
V$GLOBAL_TRANSACTION | O | O | O | O | O |
V$JOURNALING | X | O | O | O | O |
V$INCREMENTAL_BACKUP | O | O | O | O | O |
V$INSTANCE | O | O | O | O | O |
V$KEYWORDS | O | O | O | O | O |
V$LATCH | O | O | O | O | O |
V$LICENSE | X | X | X | X | O |
V$LOCK_WAIT | O | O | O | O | O |
V$LOCKED_OBJECT | X | X | O | O | O |
V$LOGFILE | O | O | O | O | O |
V$OPEN_CURSOR | X | X | X | X | O |
V$PLAN_HISTORY | X | X | X | O | O |
V$PLAN_HISTORY_LATEST | X | X | X | O | O |
V$PROCESS_MEM_STAT | O | O | O | O | O |
V$PROCESS_SQL_STAT | O | O | O | O | O |
V$PROCESS_STAT | O | O | O | O | O |
V$PROPERTY | O | O | O | O | O |
V$PROPERTY_ALIAS | X | X | X | X | O |
V$PSM_RESERVED_WORDS | X | O | O | O | O |
V$QUEUE | O | O | O | O | O |
V$RESERVED_WORDS | O | O | O | O | O |
V$SESSION | O | O | O | O | O |
V$SESSION_AUDIT | X | O | O | O | O |
V$SESSION_CONNECT_INFO | O | O | O | O | O |
V$SESSION_EVENT | X | O | O | O | O |
V$SESSION_MEM_STAT | O | O | O | O | O |
V$SESSION_MEM_USAGE | X | X | X | O | O |
V$SESSION_SQL_STAT | O | O | O | O | O |
V$SESSION_STAT | O | O | O | O | O |
V$SESSION_WAIT | X | O | O | O | O |
V$SHARED_MODE | O | O | O | O | O |
V$SHARED_SERVER | O | O | O | O | O |
V$SHM_SEGMENT | O | O | O | O | O |
V$SPROPERTY | O | O | O | O | O |
V$SQLFN_METADATA | O | O | O | O | O |
V$SQL_CACHE | O | O | O | O | O |
V$SQL_COMMAND | X | O | O | O | O |
V$SQL_HISTORY | X | O | O | O | O |
V$STATEMENT | O | O | O | O | O |
V$SYSTEM_EVENT | X | O | O | O | O |
V$SYSTEM_MEM_STAT | O | O | O | O | O |
V$SYSTEM_SQL_STAT | O | O | O | O | O |
V$SYSTEM_STAT | O | O | O | O | O |
V$TABLES | O | O | O | O | O |
V$TABLESPACE | O | O | O | O | O |
V$TABLESPACE_STAT | X | O | O | O | O |
V$TRANSACTION | O | O | O | O | O |
V$WAIT_EVENT_CLASS_NAME | X | O | O | O | O |
V$WAIT_EVENT_NAME | X | O | O | O | O |
V$XA_TRANSATION | X | O | O | O | O |
Server Property
The following is a feature matrix for server property.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
ADMIN_SESSION_POOL_INIT_SIZE | X | X | X | X | O |
ADMIN_SESSION_POOL_NEXT_SIZE | X | X | X | X | O |
AGING_INTERVAL | O | O | O | O | O |
AGING_PLAN_INTERVAL | O | O | O | O | O |
ARCHIVELOG_DIR | O | X | X | X | X |
ARCHIVELOG_DIR_1 ~ DIR_10 | O | O | O | O | O |
ARCHIVELOG_FILE | O | O | O | O | O |
ARCHIVELOG_MODE | O | O | O | O | O |
BACKUP_DIR_1 ~ DIR_10 | O | O | O | O | O |
BLOCK_READ_COUNT | O | O | O | O | O |
BROADCAST_INDEX_REBUILD_PROTOCOL | X | X | X | O | O |
BROADCAST_REBALANCE_PROTOCOL | X | X | O | O | O |
BUFFER_CACHE_SIZE | X | X | O | O | O |
BUFFER_CHECKPOINT_LIST_COUNT | X | X | O | X | X |
BUFFER_DIRTY_PAGE_LIMIT | X | X | X | X | O |
BUFFER_FLUSH_THREADS | X | X | O | X | X |
BUFFER_FLUSHING_INTERVAL | X | X | O | X | X |
BUFFER_FREE_LIST_COUNT | X | X | O | O | O |
BUFFER_HASH_BUCKETS | X | X | O | O | O |
BUFFER_HOT_REGION_CRITERIA | X | X | O | O | O |
BUFFER_HOT_REGION_PERCENT | X | X | O | O | O |
BUFFER_LRU_LIST_COUNT | X | X | O | O | O |
BUFFER_LRU_SCAN_PERCENT | X | X | X | X | O |
BUFFER_MULTIPAGE_READ_COUNT | X | X | O | O | O |
BUFFER_PREFETCH_PAGE_COUNT | X | X | X | O | O |
BULK_IO_PAGE_COUNT | O | O | O | O | O |
CDISPATCHER_HOT_POLICY_INTERVAL | X | O | O | O | O |
CDISPATCHER_LOCKABLE_THREADS | X | X | X | X | O |
CDISPATCHER_LOCKLESS_THREADS | X | X | O | O | O |
CDISPATCHER_MAX_PACKET_BUFFER_SIZE | X | X | X | X | O |
CDISPATCHER_SOCKET_BUFFER_SIZE | X | O | O | O | O |
CHANGE_TRACKING | X | X | O | O | O |
CHANGE_TRACKING_EXTENT_SIZE | X | X | O | O | O |
CHANGE_TRACKING_FILE | X | X | O | O | O |
CHAR_LENGTH_UNITS | O | O | O | O | O |
CHARACTER_SET | O | O | O | O | O |
CHECK_DEDICATE_CONNECTION_INTERVAL | X | O | O | O | O |
CHECK_DEDICATE_SOCKET | X | X | X | X | X |
CHECKPOINT_LIST_COUNT_PER_IO_GROUP | X | X | X | X | O |
CLIENT_MAX_COUNT | O | O | O | O | O |
CLIENT_NUMA_POLICY | X | O | O | O | O |
CLOSE_PSM_CHILD_STMTS | X | O | O | O | O |
CLUSTER_ASYNC_COMMIT | X | O | O | O | O |
CLUSTER_ASYNC_REPLICATION | X | O | O | O | X |
CLUSTER_CM_BUFFER_COUNT | X | O | O | O | X |
CLUSTER_CM_BUFFER_SIZE | X | O | O | O | O |
CLUSTER_CM_READ_BUFFER_SIZE | X | O | O | O | O |
CLUSTER_COMMIT_SLAVE_CSERVERS | X | X | X | X | O |
CLUSTER_COMMIT_STREAM_ISOLATION | X | O | O | O | O |
CLUSTER_CONNECTION | X | O | O | O | O |
CLUSTER_CONNECTION_TIMEOUT_SEC | X | O | O | O | O |
CLUSTER_DATA_SYNC_SERVERS | X | O | O | O | O |
CLUSTER_DEADLOCK_TIMEOUT | X | X | O | O | O |
CLUSTER_DISPATCHER_IN_QUEUE_SIZE | X | O | O | O | O |
CLUSTER_DISPATCHER_NUMA_STREAM_MAP | X | O | O | O | O |
CLUSTER_DISPATCHER_OUT_QUEUE_SIZE | X | O | O | O | O |
CLUSTER_GSERVER_RESPONSE_QUEUE_SIZE | X | X | X | X | O |
CLUSTER_HEARTBEAT_INTERVAL | X | O | O | O | O |
CLUSTER_HEARTBEAT_RETRY_COUNT | X | O | O | O | O |
CLUSTER_IGNORE_INACTIVE_MEMBER | X | O | O | O | O |
CLUSTER_KEEPALIVE_IDLE_TIME | X | X | X | X | O |
CLUSTER_LOCKABLE_CSERVERS | X | X | X | X | O |
CLUSTER_LOCKLESS_CSERVERS | X | X | X | X | O |
CLUSTER_MAX_PACKET_SIZE | X | O | O | O | O |
CLUSTER_MAX_PAYLOAD_SIZE | X | O | O | O | O |
CLUSTER_PACKET_ALLOCATION_TIMEOUT | X | O | O | O | O |
CLUSTER_SESSION_HASH_BUCKETS | X | X | O | O | O |
CLUSTER_SPLIT_BRAIN_RESOLUTION_POLICY | X | O | O | O | O |
CLUSTER_SPLIT_BRAIN_RETRY_COUNT | X | O | O | O | O |
COMMITTER_HOT_POLICY_INTERVAL | X | O | O | O | O |
CONTROL_FILE_0 ~ FILE_7 | O | O | O | O | O |
CONTROL_FILE_COUNT | O | O | O | O | O |
CONTROL_FILE_TEMP_NAME | O | O | O | O | O |
COORDINATOR_COMMIT_WRITE_MODE | X | O | O | O | O |
DA_CLIENT_NUMA_MODE | X | O | O | O | O |
DATA_STORE_MODE | O | O | O | O | O |
DATABASE_ACCESS_MODE | O | O | O | O | O |
DATABASE_INSTANCE_NAME | X | O | O | O | O |
DDL_AUTOCOMMIT | O | O | O | O | O |
DDL_LOCK_TIMEOUT | O | O | O | O | O |
DEADLOCK_PRIORITY | X | X | O | O | O |
DEFAULT_GLOBAL_SECONDARY_INDEX_CREATION | X | O | O | O | O |
DEFAULT_INDEX_LOGGING | O | O | X | X | X |
DEFAULT_INDEX_PCTFREE | X | O | O | O | O |
DEFAULT_INITRANS | O | O | O | O | O |
DEFAULT_MAXTRANS | O | O | O | O | O |
DEFAULT_PCTFREE | O | O | O | O | O |
DEFAULT_PCTUSED | O | O | O | O | O |
DEFAULT_REMOVAL_BACKUP_FILE | O | O | O | O | O |
DEFAULT_REMOVAL_OBSOLETE_BACKUP_LIST | O | O | O | O | O |
DEFAULT_SHARDING | X | O | O | O | O |
DISABLE_DDL | X | X | X | O | O |
DISABLE_DDL_CDC_GIVEUP | O | O | O | O | O |
DISABLE_SERIAL_DDL | X | X | X | O | O |
DISABLE_UPDATE_PK_CDC_GIVEUP | O | O | O | O | O |
DISALLOWED_PROTOCOL_TARGETTYPE | X | O | O | O | O |
DISALLOWED_PROTOCOL_TARGETTYPE_WITH_ALL | X | O | O | O | O |
DISALLOWED_PROTOCOL_TARGETTYPE_WITH_NAME | X | O | O | O | O |
DISPATCHERS | O | O | O | O | O |
DISPATCHER_CM_BUFFER_SIZE | O | O | O | O | O |
DISPATCHER_CM_UNIT_SIZE | O | O | O | O | O |
DISPATCHER_CONNECTIONS | O | O | O | O | O |
DISPATCHER_HOT_POLICY_INTERVAL | X | O | O | O | O |
DISPATCHER_LOAD_BALANCING | X | O | O | O | O |
DISPATCHER_NUMA_STREAM_MAP | X | O | O | O | O |
DISPATCHER_QUEUE_SIZE | O | O | O | O | O |
DISPATCHER_REQUEST_MINI_QUEUE_COUNT | X | O | O | O | O |
DISPATCHER_RESPONSE_MINI_QUEUE_COUNT | X | O | O | O | O |
EXECUTE_INST_HASH_TABLE_USING_AVAILABLE_MEMORY | X | X | X | O | O |
FETCH_FAILOVER | X | O | O | O | O |
FULL_TABLE_SCAN_CACHING_THRESHOLD | X | X | X | X | O |
GLOBAL_CONNECTION_ALLOW_SESSION_DEPENDENCY | X | O | O | O | O |
GLOBAL_JOURNAL_BUFFER_SIZE | X | O | O | O | O |
GLOBAL_JOURNAL_BUFFER_TOTAL_MAX_SIZE | X | O | O | O | O |
GLOBAL_PROPERTY_LOCK_TIMEOUT | X | O | O | O | O |
GLOBAL_TRANSACTION_COMMIT_WRITE_MODE | X | O | O | O | O |
GLOBAL_TRANSACTION_ISOLATION_SCOPE | X | O | O | O | O |
GLOBAL_TRANSACTION_LOG_DIR | X | O | O | O | O |
GLOBAL_TRANSACTION_LOG_FILE_SIZE | X | O | O | O | O |
GMASTER_NUMA_NODE | X | O | O | O | O |
GMON_AUTOSTART | X | O | O | O | O |
HINT_ERROR | O | O | O | O | O |
IDLE_TIMEOUT | O | O | O | O | O |
IN_DOUBT_DECISION | O | O | O | O | O |
IN_KEY_RANGE_ARRAY_COUNT | X | X | O | O | O |
INCREMENTAL_BACKUP_SCAN_BUFFER_SIZE | X | X | O | O | O |
INCREMENTAL_DATAFILE_HEADER_UPDATE_CRITERIA | X | X | X | X | O |
INDEX_BUILD_PARALLEL_FACTOR | O | O | O | O | O |
INDEX_MERGE_RUN_COUNT | O | O | O | O | O |
INDEX_LOGGING_THROTTLING | X | X | X | O | O |
INDEX_REBUILD_BLOCK_READ_COUNT | X | X | O | O | O |
INDEX_SORT_RUN_SIZE | O | O | O | O | O |
INDEX_TREE_MERGE_PARALLEL_FACTOR | X | O | O | O | O |
INST_ALLOCATOR_COUNT | X | O | O | O | O |
INST_HASH_TABLE_BUCKET_MAX_COUNT | X | X | X | O | O |
INST_TABLE_BLOCK_SIZE | X | O | O | O | O |
IPC_CHANNEL_COUNT | X | X | X | O | O |
JOURNAL_TEMP_DIR | X | O | O | O | O |
KEEPALIVE_IDLE_TIME | O | O | O | O | O |
LOCAL_CLUSTER_MEMBER | X | O | O | O | O |
LOCAL_CLUSTER_MEMBER_HOST | X | O | O | O | O |
LOCAL_CLUSTER_MEMBER_PORT | X | O | O | O | O |
LOCAL_JOURNAL_BUFFER_SIZE | X | O | O | O | O |
LOCATION_FILE | X | O | O | O | O |
LOCATOR_QUERY_TIMEOUT | X | O | O | O | O |
LOCK_HASH_TABLE_SIZE | O | O | O | O | O |
LOCKABLE_DISPATCHER_CM_BUFFER_COUNT | X | X | X | X | O |
LOCKLESS_DISPATCHER_CM_BUFFER_COUNT | X | X | X | X | O |
LOG_BLOCK_SIZE | O | O | O | O | O |
LOG_BUFFER_SIZE | O | O | O | O | O |
LOG_DIR | O | O | O | O | O |
LOG_FILE_SIZE | O | O | O | O | O |
LOG_GROUP_COUNT | O | O | O | O | O |
LOG_MIRROR_MODE | O | O | O | O | O |
LOG_MIRROR_SHARED_MEMORY_STATIC_SIZE | O | O | O | O | O |
LOG_MIRROR_TIMEOUT | O | O | O | O | O |
LOG_SYNC_INTERVAL | O | O | O | O | O |
LOG_SYNC_INTERVAL_MSEC | X | O | O | O | O |
MAX_GROUP_COUNT | X | O | O | O | O |
MAX_JOURNAL_FILE_SIZE | X | O | O | O | O |
MAX_NODE_COUNT | X | O | O | O | O |
MAXIMUM_CONCURRENT_ACTIVITIES | O | O | O | O | O |
MAXIMUM_FILE_CACHE_SIZE | X | X | X | O | O |
MAXIMUM_FLANGE_COUNT | X | O | O | O | X |
MAXIMUM_FLUSH_BUFFER_PAGE_COUNT | X | X | X | O | O |
MAXIMUM_FLUSH_LOG_BLOCK_COUNT | O | O | O | O | O |
MAXIMUM_FLUSH_PAGE_COUNT | O | O | O | O | O |
MAXIMUM_INDEX_REBUILD_JOURNAL_REPLAY_COUNT | X | X | O | O | O |
MAXIMUM_JOURNAL_REPLAY_COUNT | X | O | O | O | O |
MAXIMUM_NAMED_CURSOR_COUNT | O | O | O | O | O |
MAXIMUM_PACKAGE_INSTANCE_COUNT | X | X | X | O | O |
MAXIMUM_SESSION_CM_BUFFER_SIZE | O | O | O | O | O |
MEASURE_CLUSTER_LATENCY | X | O | O | O | O |
MEDIA_RECOVERY_LOG_BUFFER_SIZE | O | X | X | X | X |
MIN_SAMPLE_ROW_COUNT | X | O | O | O | O |
MINIMUM_UNDO_PAGE_COUNT | O | O | O | O | O |
NET_BUFFER_SIZE | O | O | O | O | O |
NLS_DATE_FORMAT | O | O | O | O | O |
NLS_TIME_FORMAT | O | O | O | O | O |
NLS_TIME_WITH_TIME_ZONE_FORMAT | O | O | O | O | O |
NLS_TIMESTAMP_FORMAT | O | O | O | O | O |
NLS_TIMESTAMP_WITH_TIME_ZONE_FORMAT | O | O | O | O | O |
NUMA | X | O | O | O | O |
NUMA_MAP | X | O | O | O | O |
OFFLINE_MEMBER_AFTER_FAILOVER | X | O | O | O | O |
ONLINE_INDEX_REBUILD_JOURNAL_REPLAY_THRESHOLD | X | X | O | O | O |
ONLINE_JOURNAL_REPLAY_THRESHOLD | X | O | O | O | O |
OS_GROUP_ACCESS | X | O | O | O | O |
PACKET_COMPRESSION_THRESHOLD | X | X | O | O | O |
PAGE_CHECKSUM_TYPE | O | O | O | O | O |
PARALLEL_IO_FACTOR | O | O | O | O | O |
PARALLEL_IO_GROUP_1 ~ GROUP_16 | O | O | O | O | O |
PARALLEL_LOAD_FACTOR | O | O | O | O | O |
PENDING_LOG_BUFFER_COUNT | O | O | O | O | O |
PLAN_CACHE | O | O | O | O | O |
PLAN_CACHE_SIZE | O | O | O | O | O |
PLAN_HISTORY | X | X | X | O | O |
PLAN_HISTORY_SIZE | X | X | X | O | O |
PRIVATE_STATIC_AREA_INIT_SIZE | X | X | O | O | O |
PRIVATE_STATIC_AREA_NEXT_SIZE | X | X | O | O | O |
PRIVATE_STATIC_AREA_SHRINK_THRESHOLD | X | X | O | O | O |
PRIVATE_STATIC_AREA_SIZE | O | O | O | O | O |
PROCESS_MAX_COUNT | O | O | O | O | O |
QUERY_TIMEOUT | O | O | O | O | O |
READABLE_ARCHIVELOG_DIR_COUNT | O | O | O | O | O |
READABLE_BACKUP_DIR_COUNT | O | O | O | O | O |
REBALANCE_BLOCK_READ_COUNT | X | O | O | O | O |
REBALANCE_SHARD_DIVISOR | X | X | X | X | O |
RECOMPILE_CHECK_MINIMUM_PAGE_COUNT | O | X | X | X | X |
RECOMPILE_PAGE_PERCENT | O | X | X | X | X |
RECOVERY_LOG_BUFFER_SIZE | X | O | O | O | O |
RECYCLEBIN | X | X | O | O | O |
REDO_LOG_COMPRESSION_THRESHOLD | X | O | O | O | O |
REFINE_RELATION | O | O | O | O | O |
SESSION_FATAL_BEHAVIOR | O | O | O | O | O |
SESSION_MEMORY_INIT_SIZE | X | O | O | O | O |
SESSION_MEMORY_SHRINK_THRESHOLD | X | O | O | O | O |
SESSION_POOL_INIT_SIZE | X | X | X | X | O |
SESSION_POOL_NEXT_SIZE | X | X | X | X | O |
SHARED_MEMORY_ADDRESS | O | O | O | O | O |
SHARED_MEMORY_STATIC_KEY | O | O | O | O | O |
SHARED_MEMORY_STATIC_NAME | O | O | O | O | O |
SHARED_MEMORY_STATIC_SIZE | O | O | O | O | O |
SHARED_REQUEST_QUEUE_COUNT | O | O | O | O | O |
SHARED_SERVERS | O | O | O | O | O |
SHARED_SESSION | O | O | O | O | O |
SNAPSHOT_STATEMENT_TIMEOUT | O | O | O | O | O |
SQL_HISTORY_SIZE | X | O | O | O | O |
SUPPLEMENTAL_LOG_DATA_PRIMARY_KEY | O | O | O | O | O |
SYNC_DISPATCHER_CM_BUFFER_COUNT | X | X | X | X | O |
SYSTEM_DISK_DATA_TABLESPACE_SIZE | X | X | O | O | O |
SYSTEM_FILE_IO | O | O | O | O | O |
SYSTEM_MEMORY_AUX_TABLESPACE_SIZE | X | O | O | O | O |
SYSTEM_MEMORY_DATA_TABLESPACE_SIZE | O | O | O | O | O |
SYSTEM_MEMORY_DICT_TABLESPACE_SIZE | O | O | O | O | O |
SYSTEM_MEMORY_TEMP_TABLESPACE_SIZE | O | O | O | O | O |
SYSTEM_MEMORY_UNDO_TABLESPACE_SIZE | O | O | O | O | O |
SYSTEM_TABLESPACE_DIR | O | O | O | O | O |
SYSTEM_UDS_DIR | X | O | O | O | O |
TCP_NODELAY | X | O | O | O | O |
TEMP_SEGMENT_CACHE_SIZE | X | O | O | O | O |
TEMP_UNDO_ENABLED | X | O | O | O | O |
TIMED_STATISTICS | X | O | O | O | O |
TIMER_INTERVAL | O | X | X | O | O |
TIMEZONE | O | O | O | O | O |
TRACE_ALTER_SYSTEM | O | O | O | O | O |
TRACE_DDL | O | O | O | O | O |
TRACE_LOG_ID | O | O | O | O | O |
TRACE_LOG_MSGBUG_SIZE | X | O | O | O | O |
TRACE_LOG_TIME_DETAIL | O | O | O | O | O |
TRACE_LOGGER | X | O | O | O | O |
TRACE_LOGGER_REMOTE_HOST | X | O | O | O | O |
TRACE_LOGGER_REMOTE_PORT | X | O | O | O | O |
TRACE_LOGIN | O | O | O | O | O |
TRACE_LONG_RUN_CURSOR | O | O | O | O | O |
TRACE_LONG_RUN_SQL | O | O | O | O | O |
TRACE_LONG_RUN_TIMER | X | X | O | O | O |
TRACE_SYSTEM_DIR | X | X | X | X | O |
TRACE_XA | O | O | O | O | O |
TRANSACTION_ALLOCATION_TIMEOUT | X | O | O | O | O |
TRANSACTION_COMMIT_WRITE_MODE | O | O | O | O | O |
TRANSACTION_MAXIMUM_UNDO_PAGE_COUNT | O | O | O | O | O |
TRANSACTION_TABLE_SIZE | O | O | O | O | O |
TRANSACTION_TIMEOUT | X | O | O | O | O |
UNDO_RELATION_ALLOCATION_TIMEOUT | X | O | O | O | O |
UNDO_RELATION_COUNT | O | O | O | O | O |
UNDO_SHRINK_THRESHOLD | O | O | O | O | O |
USE_LARGE_PAGES | X | X | O | O | O |
USER_DATA_TABLESPACE_MEDIA_TYPE | X | X | O | O | O |
USER_DATA_TABLESPACE_SIZE | X | X | O | O | O |
USER_DISK_DATA_TABLESPACE_NEXTSIZE | X | X | O | O | O |
USER_TEMP_TABLESPACE_SIZE | O | O | O | O | O |
XA_TRANSACTION_IDLE_TIMEOUT | X | X | O | O | O |
Property Alias
The following is a feature matrix for property alias.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
CDISPATCHER_THREADS | X | O | O | O | O |
CLUSTER_COMMIT_SLAVES | X | O | O | O | O |
CLUSTER_SEREVER_RESPONSE_QUEUE_SIZE | X | O | O | O | O |
CSERVER | X | O | O | O | O |
INCREMENTAL_CHECKPOINT_CRITERIA | X | X | X | X | O |
LOCKLESS_CSERVERS | X | X | O | O | O |
MEMORY_MERGE_RUN_COUNT | O | O | O | O | O |
MEMORY_SORT_RUN_SIZE | O | O | O | O | O |
SYSTEM_LOGGER_DIR | O | O | O | O | O |
SQL
SQL Element
Data Type
The following is a feature matrix for data type.
Type | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Character string type | CHAR | O | O | O | O | O |
VARCHAR | O | O | O | O | O | |
LONG VARCHAR | O | O | O | O | O | |
Binary string type | BINARY | O | O | O | O | O |
VARBINARY | O | O | O | O | O | |
LONG VARBINARY | O | O | O | O | O | |
Decimal number type | SMALLINT | O | O | O | O | O |
INTEGER | O | O | O | O | O | |
BIGINT | O | O | O | O | O | |
NUMERIC | O | O | O | O | O | |
DECIMAL | X | O | O | O | O | |
NUMBER | O | O | O | O | O | |
REAL | O | O | O | O | O | |
DOUBLE PRECISION | O | O | O | O | O | |
FLOAT | O | O | O | O | O | |
Binary number type | NATIVE_SMALLINT | O | O | O | O | O |
NATIVE_INTEGER | O | O | O | O | O | |
NATIVE_BIGINT | O | O | O | O | O | |
NATIVE_REAL | O | O | O | O | O | |
NATIVE_DOUBLE | O | O | O | O | O | |
BOOLEAN type | BOOLEAN | O | O | O | O | O |
Date/ time type | DATE | O | O | O | O | O |
TIME | O | O | O | O | O | |
TIME WITH TIME ZONE | O | O | O | O | O | |
TIMESTAMP | O | O | O | O | O | |
TIMESTAMP WITH TIME ZONE | O | O | O | O | O | |
INTERVAL type | INTERVAL YEAR TO MONTH | O | O | O | O | O |
INTERVAL YEAR | O | O | O | O | O | |
INTERVAL MONTH | O | O | O | O | O | |
INTERVAL DAY TO SECOND | O | O | O | O | O | |
INTERVAL DAY | O | O | O | O | O | |
INTERVAL HOUR | O | O | O | O | O | |
INTERVAL MINUTE | O | O | O | O | O | |
INTERVAL SECOND | O | O | O | O | O | |
INTERVAL DAY TO HOUR | O | O | O | O | O | |
INTERVAL DAY TO MINUTE | O | O | O | O | O | |
INTERVAL HOUR TO MINUTE | O | O | O | O | O | |
INTERVAL HOUR TO SECOND | O | O | O | O | O | |
INTERVAL MINUTE TO SECOND | O | O | O | O | O | |
ROWID type | ROWID | O | O | O | O | O |
Function
The following is a feature matrix for function.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
expr1 * expr2 | O | O | O | O | O |
expr1 + expr2 | O | O | O | O | O |
datetime + interval | O | O | O | O | O |
+ expr | O | O | O | O | O |
expr1 - expr2 | O | O | O | O | O |
datetime - interval | O | O | O | O | O |
- expr | O | O | O | O | O |
expr1 / expr2 | O | O | O | O | O |
str1 || str2 | O | O | O | O | O |
expr <comp> expr | O | O | O | O | O |
expr <comp> ( subquery ) | O | O | O | O | O |
( subquery ) <comp> expr | O | O | O | O | O |
( subquery ) <comp> ( subquery ) | O | O | O | O | O |
( expr, ... ) <comp> ( expr, ... ) | O | O | O | O | O |
( expr, ... ) <comp> ( subquery ) | O | O | O | O | O |
( subquery ) <comp> ( expr, ... ) | O | O | O | O | O |
expr <comp> {ALL|ANY|SOME} ( expr, ... ) | O | O | O | O | O |
expr <comp> {ALL|ANY|SOME} ( subquery ) | O | O | O | O | O |
( subquery ) <comp> {ALL|ANY|SOME} ( expr, ... ) | O | O | O | O | O |
( subquery ) <comp> {ALL|ANY|SOME} ( subquery ) | O | O | O | O | O |
( expr, ... ) <comp> {ALL|ANY|SOME} ( expr_list, ... ) | O | O | O | O | O |
( expr, ... ) <comp> {ALL|ANY|SOME} ( subquery ) | O | O | O | O | O |
( subquery ) <comp> {ALL|ANY|SOME} ( expr_list, ... ) | O | O | O | O | O |
ABS( num ) | O | O | O | O | O |
ACOS( num ) | O | O | O | O | O |
ADDDATE( date, interval ) | O | O | O | O | O |
ADDDATE( expr, days ) | O | O | O | O | O |
ADDTIME( expr1, expr2 ) | O | O | O | O | O |
ADD_MONTHS( date, number ) | O | O | O | O | O |
AND | O | O | O | O | O |
ASCII( char ) | X | O | O | O | O |
ASIN( num ) | O | O | O | O | O |
ATAN( num ) | O | O | O | O | O |
ATAN2( num1, num2 ) | O | O | O | O | O |
AVG( num ) | O | O | O | O | O |
AVG( expr ) OVER | X | X | X | X | O |
expr1 [NOT] BETWEEN [ASYMMETRIC|SYMMETRIC] expr2 AND expr3 | O | O | O | O | O |
BITAND( num1, num2 ) | O | O | O | O | O |
BITNOT( num ) | O | O | O | O | O |
BITOR( num1, num2 ) | O | O | O | O | O |
BITXOR( num1, num2 ) | O | O | O | O | O |
BIT_LENGTH( str ) | O | O | O | O | O |
BYTE_LENGTH( str ) | O | O | O | O | O |
CASE .. WHEN .. THEN .. ELSE .. END | O | O | O | O | O |
CASE2( condition, result, ... ) | O | O | O | O | O |
CAST( expr AS datatype ) | O | O | O | O | O |
CBRT( num ) | O | O | O | O | O |
CEIL( num ) | O | O | O | O | O |
CEILING( num ) | O | O | O | O | O |
CHAR_LENGTH( str ) | O | O | O | O | O |
CHARACTER_LENGTH( str ) | O | O | O | O | O |
CHR( num ) | X | O | O | O | O |
CLOCK_DATE() | O | O | O | O | O |
CLOCK_LOCALTIME() | O | O | O | O | O |
CLOCK_LOCALTIMESTAMP() | O | O | O | O | O |
CLOCK_TIME() | O | O | O | O | O |
CLOCK_TIMESTAMP() | O | O | O | O | O |
COALESCE( expr1, ..., exprN ) | O | O | O | O | O |
CONCAT( str1, str2 ) | O | O | O | O | O |
CONCATENATE( str1, str2 ) | O | O | O | O | O |
CONNECT_BY_ISCYCLE | X | X | X | O | O |
CONNECT_BY_ISLEAF | X | X | X | O | O |
CONNECT_BY_ROOT expr | X | X | X | O | O |
CORR( expr1, expr2 ) OVER | X | X | X | X | O |
COS( num ) | O | O | O | O | O |
COT( num ) | O | O | O | O | O |
COUNT( expr ) | O | O | O | O | O |
COUNT( expr ) OVER | X | X | X | X | O |
COUNT(*) | O | O | O | O | O |
COUNT(*) OVER | X | X | X | X | O |
COVAR_POP( expr1, expr2 ) OVER | X | X | X | X | O |
COVAR_SAMP( expr1, expr2 ) OVER | X | X | X | X | O |
CUME_DIST() OVER | X | X | X | X | O |
CURRENT_CATALOG | O | O | O | O | O |
CURRENT_DATE | O | O | O | O | O |
CURRENT_SCHEMA | O | O | O | O | O |
CURRENT_TIME | O | O | O | O | O |
CURRENT_TIMESTAMP | O | O | O | O | O |
CURRENT_USER | O | O | O | O | O |
seq.CURRVAL | O | O | O | O | O |
CURRVAL( seq ) | O | O | O | O | O |
DATEADD( datepart, number, date ) | O | O | O | O | O |
DATEDIFF( datepart, startdate, enddate ) | O | O | O | O | O |
DATE_ADD( date, interval ) | O | O | O | O | O |
DATE_PART( field, datetime ) | O | O | O | O | O |
DECODE( expr, comparison, result, ... ) | O | O | O | O | O |
DEGREES( radians ) | O | O | O | O | O |
DENSE_RANK() OVER | X | X | X | X | O |
DIGEST ( data, type ) | X | O | O | O | O |
expr IS [NOT] DISTINCT FROM expr | X | X | X | X | O |
( expr, ... ) IS [NOT] DISTINCT FROM ( expr, ... ) | X | X | X | X | O |
DUMP( expr ) | O | O | O | O | O |
EXISTS( subquery ) | O | O | O | O | O |
EXP( num ) | O | O | O | O | O |
EXTRACT( field FROM datetime ) | O | O | O | O | O |
FACTORIAL( num ) | O | O | O | O | O |
FIRST : aggr_func KEEP ( DENSE_RANK FIRST ORDER BY expr, ... ) OVER | X | X | X | X | O |
FIRST_VALUE( expr ) OVER | X | X | X | X | O |
FLOOR( num ) | O | O | O | O | O |
FROM_BASE64( str ) | X | O | O | O | O |
FROM_TZ( timestamp, timezone ) | X | X | X | O | O |
GREATEST( expr, ... ) | O | O | O | O | O |
HASH32( expr [, expr] ... ) | X | X | X | O | O |
HEX( str ) | X | O | O | O | O |
expr1 [NOT] IN ( expr, ... ) | O | O | O | O | O |
expr1 [NOT] IN ( subquery ) | O | O | O | O | O |
subquery [NOT] IN ( <expr_list> ) | O | O | O | O | O |
subquery [NOT] IN ( subquery ) | O | O | O | O | O |
<expr_list> [NOT] IN ( <expr_list>, ... ) | O | O | O | O | O |
<expr_list> [NOT] IN ( subquery ) | O | O | O | O | O |
subquery [NOT] IN ( <expr_list>, ... ) | O | O | O | O | O |
INITCAP( str ) | O | O | O | O | O |
INSTR( str, substr, ... ) | O | O | O | O | O |
IS NOT NULL | O | O | O | O | O |
IS NULL | O | O | O | O | O |
JSON_ARRAY( expr, ... ) | X | X | X | X | O |
JSON_ARRAYAGG( expr ) | X | X | X | X | O |
JSON_ARRAYAGG( expr ) OVER | X | X | X | X | O |
JSON_OBJECT( name VALUE expr, ... ) | X | X | X | X | O |
JSON_OBJECTAGG( name VALUE expr ) | X | X | X | X | O |
JSON_OBJECTAGG( name VALUE expr ) OVER | X | X | X | X | O |
LAG( expr [, offset [, default]] ) OVER | X | X | X | X | O |
LAST : aggr_func KEEP ( DENSE_RANK LAST ORDER BY expr, ... ) OVER | X | X | X | X | O |
LAST_DAY( date ) | O | O | O | O | O |
LAST_IDENTITY_VALUE() | X | O | O | O | O |
LAST_VALUE( expr ) OVER | X | X | X | X | O |
LEAD( expr [, offset [, default]] ) OVER | X | X | X | X | O |
LEAST( expr, ... ) | O | O | O | O | O |
LENGTH( str ) | O | O | O | O | O |
LENGTHB( str ) | O | O | O | O | O |
LEVEL | X | X | X | O | O |
string [NOT] LIKE pattern ESCAPE escape_char | O | O | O | O | O |
LISTAGG( str [, delimiter] ) OVER | X | X | X | X | O |
LN( num ) | O | O | O | O | O |
LNNVL( expr ) | X | X | O | O | O |
LOCALTIME | O | O | O | O | O |
LOCALTIMESTAMP | O | O | O | O | O |
LOCAL_GROUP_ID() | X | O | O | O | O |
LOCAL_GROUP_NAME() | X | O | O | O | O |
LOCAL_MEMBER_ID() | X | O | O | O | O |
LOCAL_MEMBER_NAME() | X | O | O | O | O |
LOG( num2 ) | O | O | O | O | O |
LOG( num1, num2 ) | O | O | O | O | O |
LOGON_USER() | O | O | O | O | O |
LOWER( str ) | O | O | O | O | O |
LPAD( str, length, fill ) | O | O | O | O | O |
LTRIM( str, [ str ] ) | O | O | O | O | O |
MAX( expr ) | O | O | O | O | O |
MAX( expr ) OVER | X | X | X | X | O |
MEDIAN( expr ) OVER | X | X | X | X | O |
MIN( expr ) | O | O | O | O | O |
MIN( expr ) OVER | X | X | X | X | O |
MOD( num1, num2 ) | O | O | O | O | O |
MONTHS_BETWEEN( date1, date2 ) | X | O | O | O | O |
NEXT_DAY( date, day ) | X | O | O | O | O |
seq.NEXTVAL | O | O | O | O | O |
NEXTVAL( seq ) | O | O | O | O | O |
NEXT VALUE FOR seq | O | O | O | O | O |
NOT | O | O | O | O | O |
NTH_VALUE( expr, n ) OVER | X | X | X | X | O |
NTILE( expr ) OVER | X | X | X | X | O |
NULLIF( expr1, expr2 ) | O | O | O | O | O |
NUMTODSINTERVAL( num, interval_indicator ) | X | X | O | O | O |
NUMTOYMINTERVAL( num, interval_indicator ) | X | X | O | O | O |
NVL( expr1, expr2 ) | O | O | O | O | O |
NVL2( expr1, expr2, expr3 ) | O | O | O | O | O |
OCTET_LENGTH( str ) | O | O | O | O | O |
OVERLAY( str1 PLACING str2 FROM start FOR length ) | O | O | O | O | O |
OR | O | O | O | O | O |
PERCENT_RANK() OVER | X | X | X | X | O |
PERCENTILE_CONT( expr ) OVER | X | X | X | X | O |
PERCENTILE_DISC( expr ) OVER | X | X | X | X | O |
PHYSICAL_LENGTH( expr ) | X | X | O | O | O |
PI() | O | O | O | O | O |
POSITION( str1 IN str2 ) | O | O | O | O | O |
POWER( num1, num2 ) | O | O | O | O | O |
PRIOR expr | X | X | X | O | O |
RADIANS( degrees ) | O | O | O | O | O |
RANDOM( min, max ) | O | O | O | O | O |
RANK() OVER | X | X | X | X | O |
RATIO_TO_REPORT( expr ) OVER | X | X | X | X | O |
REGR_AVGX( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_AVGY( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_COUNT( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_INTERCEPT( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_R2( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_SLOPE( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_SXX( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_SXY( expr1, expr2 ) OVER | X | X | X | X | O |
REGR_SYY( expr1, expr2 ) OVER | X | X | X | X | O |
REPEAT( str, num ) | O | O | O | O | O |
REPLACE( str, from, to ) | O | O | O | O | O |
REVERSE( str ) | X | O | O | O | O |
ROUND( num ) | O | O | O | O | O |
ROUND( date, fmt ) | O | O | O | O | O |
ROW_NUMBER() OVER | X | X | X | X | O |
ROWID_GRID_BLOCK_ID( rowid ) | X | O | O | O | O |
ROWID_GRID_BLOCK_SEQ( rowid ) | X | O | O | O | O |
ROWID_MEMBER_ID( rowid ) | X | O | O | O | O |
ROWID_OBJECT_ID( rowid ) | O | O | O | O | O |
ROWID_PAGE_ID( rowid ) | O | O | O | O | O |
ROWID_ROW_NUMBER( rowid ) | O | O | O | O | O |
ROWID_SHARD_ID( rowid ) | X | O | O | O | O |
ROWID_TABLESPACE_ID( rowid ) | O | O | O | O | O |
ROWNUM | X | O | O | O | O |
RPAD( str, length, fill ) | O | O | O | O | O |
RTRIM( str, [ str ] ) | O | O | O | O | O |
SESSION_ID() | O | O | O | O | O |
SESSION_SERIAL() | O | O | O | O | O |
SESSION_USER | O | O | O | O | O |
SESSIONTIMEZONE() | X | X | X | X | O |
SHARD_GROUP_ID( table, expr ) | X | O | O | O | O |
SHARD_GROUP_NAME( table_name, shard_key_value [, ...] ) | X | O | O | O | O |
SHARD_ID( table, expr ) | X | O | O | O | O |
SHARD_NAME( table_name, shard_key_value [, ...] ) | X | O | O | O | O |
SHIFT_LEFT( num, cnt ) | O | O | O | O | O |
SHIFT_RIGHT( num, cnt ) | O | O | O | O | O |
SIGN( num ) | O | O | O | O | O |
SIN( num ) | O | O | O | O | O |
SPLIT_PART( str, delimiter, field ) | O | O | O | O | O |
SQRT( num ) | O | O | O | O | O |
STATEMENT_DATE() | O | O | O | O | O |
STATEMENT_LOCALTIME() | O | O | O | O | O |
STATEMENT_LOCALTIMESTAMP() | O | O | O | O | O |
STATEMENT_TIME() | O | O | O | O | O |
STATEMENT_TIMESTAMP() | O | O | O | O | O |
STATEMENT_VIEW_SCN() | O | O | O | O | O |
STATEMENT_VIEW_SCN_DCN() | X | O | O | O | O |
STATEMENT_VIEW_SCN_GCN() | X | O | O | O | O |
STATEMENT_VIEW_SCN_LCN() | X | O | O | O | O |
STDDEV( [ ALL | DISTINCT ] expr ) | X | O | O | O | O |
STDDEV( expr ) OVER | X | X | X | X | O |
STDDEV_POP( expr ) | X | O | O | O | O |
STDDEV_POP( expr ) OVER | X | X | X | X | O |
STDDEV_SAMP( expr ) | X | O | O | O | O |
STDDEV_SAMP( expr ) OVER | X | X | X | X | O |
STRING_AGG( str [, delimiter] ) OVER | X | X | X | X | O |
SUBSTR( str FROM start FOR length ) | O | O | O | O | O |
SUBSTR( str, start, length ) | O | O | O | O | O |
SUBSTRB( str, start, length ) | O | O | O | O | O |
SUBSTRING( str FROM start FOR length ) | O | O | O | O | O |
SUBSTRING( str, start, length ) | O | O | O | O | O |
SUM( expr ) | O | O | O | O | O |
SUM( expr ) OVER | X | X | X | X | O |
SYSDATE | O | O | O | O | O |
SYS_CONNECT_BY_PATH( expr, 'string' ) | X | X | X | O | O |
SYS_EXTRACT_UTC( datetime_with_timezone ) | X | O | O | O | O |
SYSTIME | O | O | O | O | O |
SYSTIMESTAMP | O | O | O | O | O |
TAN( num ) | O | O | O | O | O |
TO_CHAR( datetime, fmt ) | O | O | O | O | O |
TO_CHAR( number, fmt ) | O | O | O | O | O |
TO_BASE64( str ) | X | O | O | O | O |
TO_DATE( str, fmt ) | O | O | O | O | O |
TO_NATIVE_BIGINT( str, fmt ) | X | X | O | O | O |
TO_NATIVE_DOUBLE( str, fmt ) | O | O | O | O | O |
TO_NATIVE_INTEGER( str, fmt ) | X | X | O | O | O |
TO_NATIVE_REAL( str, fmt ) | O | O | O | O | O |
TO_NATIVE_SMALLINT( str, fmt ) | X | X | O | O | O |
TO_NUMBER( num, fmt ) | O | O | O | O | O |
TO_TIME( str, fmt ) | O | O | O | O | O |
TO_TIME_TZ( str, fmt ) | O | O | O | O | O |
TO_TIME_WITH_TIME_ZONE( str, fmt ) | O | O | O | O | O |
TO_TIMESTAMP( str, fmt ) | O | O | O | O | O |
TO_TIMESTAMP_TZ( str, fmt ) | O | O | O | O | O |
TO_TIMESTAMP_WITH_TIME_ZONE( str, fmt ) | O | O | O | O | O |
TRANSACTION_DATE() | O | O | O | O | O |
TRANSACTION_LOCALTIME() | O | O | O | O | O |
TRANSACTION_LOCALTIMESTAMP() | O | O | O | O | O |
TRANSACTION_TIME() | O | O | O | O | O |
TRANSACTION_TIMESTAMP() | O | O | O | O | O |
TRANSLATE( str, from, to ) | O | O | O | O | O |
TRIM( LEADING|TRAILING|BOTH trim_char FROM source ) | O | O | O | O | O |
TRUNC( num, scale ) | O | O | O | O | O |
TRUNC( date, fmt ) | O | O | O | O | O |
UPPER( str ) | O | O | O | O | O |
UNHEX( str ) | X | O | O | O | O |
UNHEX_TO_CHARSTR( str ) | X | O | O | O | O |
USER_ID() | O | O | O | O | O |
UUID() | X | O | O | O | O |
VAR_POP( expr ) | X | O | O | O | O |
VAR_POP( expr ) OVER | X | X | X | X | O |
VAR_SAMP( expr ) | X | O | O | O | O |
VAR_SAMP( expr ) OVER | X | X | X | X | O |
VARIANCE( [ ALL | DISTINCT ] expr ) | X | O | O | O | O |
VARIANCE( expr ) OVER | X | X | X | X | O |
VERSION() | O | O | O | O | O |
WIDTH_BUCKET( num, min, max, cnt ) | O | O | O | O | O |
Object
SQL Object
The following is a feature matrix for DDL which creates/ drops/ alters an SQL object.
Object | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Database object | ALTER DATABASE ARCHIVELOG | O | O | O | O | O |
ALTER DATABASE ADD LOGFILE | O | O | O | O | O | |
ALTER DATABASE DROP LOGFILE | O | O | O | O | O | |
ALTER DATABASE RENAME GLOBAL TRANSACTION LOGFILE | X | X | X | X | O | |
ALTER DATABASE RENAME LOGFILE | O | O | O | O | O | |
ALTER DATABASE BEGIN/END BACKUP | O | O | O | O | O | |
ALTER DATABASE RECOVER | O | O | O | O | O | |
ALTER DATABASE RECOVER TABLESPACE | O | O | O | O | O | |
ALTER DATABASE REGISTER | O | O | O | O | O | |
ALTER DATABASE RESTORE | O | O | O | O | O | |
ANALYZE SYSTEM | X | O | O | O | O | |
COMMENT ON object IS .. | O | O | O | O | O | |
Profile object | CREATE PROFILE | O | O | O | O | O |
DROP PROFILE | O | O | O | O | O | |
ALTER PROFILE | O | O | O | O | O | |
Audit policy object | CREATE AUDIT POLICY | X | O | O | O | O |
DROP AUDIT POLICY | X | O | O | O | O | |
ALTER AUDIT POLICY | X | O | O | O | O | |
AUDIT POLICY | X | O | O | O | O | |
NOAUDIT POLICY | X | O | O | O | O | |
Authorization object | CREATE USER | O | O | O | O | O |
DROP USER | O | O | O | O | O | |
ALTER USER | O | O | O | O | O | |
GRANT privileges TO | O | O | O | O | O | |
REVOKE privileges FROM | O | O | O | O | O | |
Schema object | CREATE SCHEMA | O | O | O | O | O |
DROP SCHEMA | O | O | O | O | O | |
Tablespace object | CREATE MEMORY DATA TABLESPACE | O | O | O | O | O |
CREATE MEMORY TEMPORARY TABLESPACE | O | O | O | O | O | |
DROP TABLESPACE | O | O | O | O | O | |
ALTER TABLESPACE .. RENAME TO | O | O | O | O | O | |
ALTER TABLESPACE .. BEGIN/END BACKUP | O | O | O | O | O | |
ALTER TABLESPACE .. ADD [DATAFILE|MEMORY] | O | O | O | O | O | |
ALTER TABLESPACE .. DROP [DATAFILE|MEMORY] | O | O | O | O | O | |
ALTER TABLESPACE .. RENAME DATAFILE | O | O | O | O | O | |
ALTER TABLESPACE .. { ONLINE | OFFLINE } | O | O | O | O | O | |
Table object | CREATE TABLE | O | O | O | O | O |
CREATE TABLE AS SELECT | O | O | O | O | O | |
CREATE GLOBAL TEMPORARY TABLE | X | O | O | O | O | |
CREATE GLOBAL TEMPORARY TABLE AS SELECT | X | O | O | O | O | |
CREATE IMMUTABLE TABLE | X | X | O | O | O | |
CREATE IMMUTABLE TABLE AS SELECT | X | X | O | O | O | |
DROP TABLE | O | O | O | O | O | |
TRUNCATE TABLE | O | O | O | O | O | |
ALTER TABLE .. STORAGE | O | O | O | O | O | |
ALTER TABLE .. RENAME TO | O | O | O | O | O | |
ALTER TABLE .. ADD COLUMN | O | O | O | O | O | |
ALTER TABLE .. SET UNUSED COLUMN | O | O | O | O | O | |
ALTER TABLE .. ALTER COLUMN | O | O | O | O | O | |
ALTER TABLE .. RENAME COLUMN | O | O | O | O | O | |
ALTER TABLE .. RENAME CONSTRAINT | X | O | O | O | O | |
ALTER TABLE .. ADD CONSTRAINT | O | O | O | O | O | |
ALTER TABLE .. DROP CONSTRAINT | O | O | O | O | O | |
ALTER TABLE .. ALTER CONSTRAINT | O | O | O | O | O | |
ALTER TABLE .. ADD SUPPLEMENTAL LOG | O | O | O | O | O | |
ALTER TABLE .. DROP SUPPLEMENTAL LOG | O | O | O | O | O | |
ALTER TABLE .. READ { ONLY | WRITE } | X | O | O | O | O | |
ANALYZE TABLE | X | O | O | O | O | |
FLASHBACK TABLE | X | X | O | O | O | |
PURGE | X | X | O | O | O | |
View object | CREATE VIEW | O | O | O | O | O |
DROP VIEW | O | O | O | O | O | |
ALTER VIEW | O | O | O | O | O | |
Index object | CREATE INDEX | O | O | O | O | O |
DROP INDEX | O | O | O | O | O | |
ALTER INDEX .. AGING | X | O | O | O | O | |
ALTER INDEX .. STORAGE | O | O | O | O | O | |
ALTER INDEX .. RENAME | X | O | O | O | O | |
ALTER INDEX .. REBUILD | X | X | O | O | O | |
ALTER INDEX .. COALESCE | X | X | X | X | O | |
Sequence object | CREATE SEQUENCE | O | O | O | O | O |
DROP SEQUENCE | O | O | O | O | O | |
ALTER SEQUENCE | O | O | O | O | O | |
Synonym object | CREATE SYNONYM | O | O | O | O | O |
DROP SYNONYM | O | O | O | O | O | |
CREATE PUBLIC SYNONYM | O | O | O | O | O | |
DROP PUBLIC SYNONYM | O | O | O | O | O | |
Stored procedure object | CREATE PROCEDURE | X | O | O | O | O |
DROP PROCEDURE | X | O | O | O | O | |
ALTER PROCEDURE | X | O | O | O | O | |
Stored function object | CREATE FUNCTION | X | O | O | O | O |
DROP FUNCTION | X | O | O | O | O | |
ALTER FUNCTION | X | O | O | O | O | |
Package object | CREATE PACKAGE | X | X | O | O | O |
CREATE PACKAGE BODY | X | X | O | O | O | |
ALTER PACKAGE | X | X | O | O | O | |
DROP PACKAGE | X | X | O | O | O |
Cluster Object
The following is a feature matrix for DDL which creates/ drops/ alters a cluster object.
Object | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Cluster system object | ALTER DATABASE REBALANCE | X | O | O | O | O |
ALTER DATABASE DROP INACTIVE CLUSTER MEMBERS | X | O | O | O | O | |
ALTER DATABASE DROP OFFLINE SEGMENTS | X | X | X | X | O | |
ALTER DATABASE SYNCHRONIZE | X | X | X | X | O | |
Cluster group object | CREATE CLUSTER GROUP | X | O | O | O | O |
DROP CLUSTER GROUP | X | O | O | O | O | |
Cluster member object | ALTER CLUSTER GROUP name ADD MEMBER | X | O | O | O | O |
ALTER CLUSTER GROUP name OFFLINE MEMBER | X | O | O | O | O | |
ALTER DATABASE RESET LOCAL CLUSTER MEMBER | X | O | O | O | O | |
ALTER SYSTEM IRRECOVERABLE CLUSTER MEMBER | X | O | O | O | O | |
ALTER SYSTEM JOIN DATABASE | X | O | O | O | O | |
Cluster location object | CREATE CLUSTER LOCATION | X | O | O | O | O |
DROP CLUSTER LOCATION | X | O | O | O | O | |
ALTER CLUSTER LOCATION | X | O | O | O | O | |
Cluster table and shard object | ALTER TABLE name REBALANCE | X | O | O | O | O |
ALTER TABLE name DROP OFFLINE SEGMENTS | X | X | X | X | O | |
ALTER TABLE name SYNCHRONIZE | X | X | X | X | O | |
ALTER TABLE name MERGE SHARDS | X | X | O | O | O | |
ALTER TABLE name MOVE SHARD | X | O | O | O | O | |
ALTER TABLE name SPLIT SHARD | X | O | O | O | O | |
ALTER TABLE name RENAME SHARD | X | O | O | O | O | |
Global secondary index object | ALTER TABLE name ADD GLOBAL SECONDARY INDEX | X | O | O | O | O |
ALTER TABLE name DROP GLOBAL SECONDARY INDEX | X | O | O | O | O | |
ALTER TABLE name ALTER GLOBAL SECONDARY INDEX | X | O | O | O | O | |
ALTER TABLE name ALTER GLOBAL SECONDARY INDEX REBUILD | X | X | O | O | O | |
ALTER TABLE name ALTER GLOBAL SECONDARY INDEX COALESCE | X | X | X | X | O |
SQL Language
DML
The following is a feature matrix for DML which manipulates data.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
INSERT INTO .. | O | O | O | O | O |
INSERT INTO .. RETURNING query | O | O | O | O | O |
INSERT INTO .. RETURNING .. INTO .. | O | O | O | O | O |
INSERT INTO .. UPDATE | X | X | X | O | O |
INSERT INTO .. UPDATE .. RETURNING .. | X | X | X | O | O |
INSERT INTO .. UPDATE .. RETURNING .. INTO .. | X | X | X | O | O |
DELETE FROM .. | O | O | O | O | O |
DELETE FROM .. RETURNING query | O | O | O | O | O |
DELETE FROM .. RETURNING .. INTO .. | O | O | O | O | O |
DELETE FROM .. WHERE CURRENT OF cursor | O | O | O | O | O |
UPDATE .. | O | O | O | O | O |
UPDATE .. RETURNING query | O | O | O | O | O |
UPDATE .. RETURNING .. INTO .. | O | O | O | O | O |
UPDATE .. WHERE CURRENT OF cursor | O | O | O | O | O |
CALL proc_name | X | O | O | O | O |
Query
The following is a feature matrix for SELECT statement which enquires data.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
<query expression> | O | O | O | O | O |
<query specification> | O | O | O | O | O |
<select list> | O | O | O | O | O |
<from clause> | O | O | O | O | O |
<joined table> | O | O | O | O | O |
<where clause> | O | O | O | O | O |
<group by clause> | O | O | O | O | O |
<window clause> | X | X | X | X | O |
<window partition clause> | X | X | X | X | O |
<window order clause> | X | X | X | X | O |
<window frame clause> | X | X | X | X | O |
<window frame exclusion> | X | X | X | X | O |
<order by clause> | O | O | O | O | O |
<offset limit clause> | O | O | O | O | O |
<set operator> | O | O | O | O | O |
<subquery> | O | O | O | O | O |
<hint clause> | O | O | O | O | O |
<with clause> | X | X | X | O | O |
<search clause> | X | X | X | O | O |
<cycle clause> | X | X | X | O | O |
<start with clause> | X | X | X | O | O |
<connect by clause> | X | X | X | O | O |
<order siblings by clause> | X | X | X | O | O |
Control Language
The following is a feature matrix for control statement.
Control statement | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Transaction | COMMIT | O | O | O | O | O |
ROLLBACK | O | O | O | O | O | |
SAVEPOINT | O | O | O | O | O | |
RELEASE SAVEPOINT | O | O | O | O | O | |
LOCK TABLE | O | O | O | O | O | |
SET CONSTRAINTS | O | O | O | O | O | |
SET TRANSACTION | O | O | O | O | O | |
Session | SET SESSION CHARACTERISTICS AS | O | O | O | O | O |
SET SESSION AUTHORIZATION | O | O | O | O | O | |
SET SCHEMA | X | X | X | O | O | |
SET TIME ZONE | O | O | O | O | O | |
ALTER SESSION SET property | O | O | O | O | O | |
System | ALTER SYSTEM {OPEN|MOUNT} DATABASE | O | O | O | O | O |
ALTER SYSTEM CHECKPOINT | O | O | O | O | O | |
ALTER SYSTEM KILL SESSION | O | O | O | O | O | |
ALTER SYSTEM RECONNECT GLOBAL CONNECTION | X | O | O | O | O | |
ALTER SYSTEM SWITCH LOGFILE | O | O | O | O | O | |
ALTER SYSTEM SET property | O | O | O | O | O | |
ALTER SYSTEM RESET property | O | O | O | O | O |
PSM Language
The following is a feature matrix for Persistent Stored Module (PSM) language element.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
Assignment Statement | X | O | O | O | O |
Basic LOOP Statement | X | O | O | O | O |
Block (BEGIN .. END) | X | O | O | O | O |
CASE Statement | X | O | O | O | O |
CLOSE Statement | X | O | O | O | O |
Collection Method Invocation | X | O | O | O | O |
Collection Variable Declaration | X | O | O | O | O |
CONTINUE Statement | X | O | O | O | O |
Cursor FOR LOOP Statement | X | O | O | O | O |
Cursor Variable Declaration | X | O | O | O | O |
DELETE Statement Extension | X | O | O | O | O |
EXCEPTION_INIT Pragma | X | O | O | O | O |
Exception Declaration | X | O | O | O | O |
Exception Handler | X | O | O | O | O |
EXECUTE IMMEDIATE Statement | X | O | O | O | O |
EXIT Statement | X | O | O | O | O |
Explicit Cursor Declaration and Definition | X | O | O | O | O |
FETCH Statement | X | O | O | O | O |
FOR LOOP Statement | X | O | O | O | O |
GOTO Statement | X | O | O | O | O |
IF Statement | X | O | O | O | O |
Implicit Cursor Attribute | X | O | O | O | O |
INSERT Statement Extension | X | O | O | O | O |
Named Cursor Attribute | X | O | O | O | O |
NULL Statement | X | O | O | O | O |
OPEN Statement | X | O | O | O | O |
OPEN FOR Statement | X | O | O | O | O |
Procedure Call | X | O | O | O | O |
Procedure Declaration and Definition | X | O | O | O | O |
RAISE Statement | X | O | O | O | O |
Record Variable Declaration | X | O | O | O | O |
RETURN Statement | X | O | O | O | O |
RETURN TABLE Statement | X | X | X | X | O |
RETURNING INTO clause | X | O | O | O | O |
%ROWTYPE Attribute | X | O | O | O | O |
Scalar Variable Declaration | X | O | O | O | O |
SELECT INTO Statement | X | O | O | O | O |
SQLCODE Function | X | O | O | O | O |
SQLERRM Function | X | O | O | O | O |
%TYPE Attribute | X | O | O | O | O |
UPDATE Statement Extension | X | O | O | O | O |
WHILE LOOP Statement | X | O | O | O | O |
The following is a feature matrix for the Built-In Package.
Package | Sub Routine | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
DBMS_LOCK | SLEEP() | X | X | O | O | O |
DBMS_OUTPUT | DISABLE() | X | X | X | O | O |
ENABLE() | X | X | X | O | O | |
GET_LINE() | X | X | O | O | O | |
NEW_LINE() | X | X | X | O | O | |
PUT() | X | X | X | O | O | |
PUT_LINE() | X | O | O | O | O | |
SET_LOG() | X | X | X | O | O | |
DBMS_SQL | RETURN_RESULT() | X | X | X | X | O |
DBMS_STANDARD | RAISE_APPLICATION_ERROR() | X | O | O | O | O |
API
ODBC
The following is a feature matrix for the ODBC standard API.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
SQLAllocHandle() | O | O | O | O | O |
SQLBindCol() | O | O | O | O | O |
SQLBindParameter() | O | O | O | O | O |
SQLCloseCursor() | O | O | O | O | O |
SQLColAttribute() | O | O | O | O | O |
SQLColumnPrivileges() | O | O | O | O | O |
SQLColumns() | O | O | O | O | O |
SQLConnect() | O | O | O | O | O |
SQLDescribeCol() | O | O | O | O | O |
SQLDescribeParam() | O | O | O | O | O |
SQLDisconnect() | O | O | O | O | O |
SQLDriverConnect() | O | O | O | O | O |
SQLEndTran() | O | O | O | O | O |
SQLExecDirect() | O | O | O | O | O |
SQLExecute() | O | O | O | O | O |
SQLExtendedFetch() | O | O | O | O | O |
SQLFetch() | O | O | O | O | O |
SQLFetchScroll() | O | O | O | O | O |
SQLForeignKeys() | O | O | O | O | O |
SQLFreeHandle() | O | O | O | O | O |
SQLFreeStmt() | O | O | O | O | O |
SQLGetConnectAttr() | O | O | O | O | O |
SQLGetCursorName() | O | O | O | O | O |
SQLGetData() | O | O | O | O | O |
SQLGetDescField() | O | O | O | O | O |
SQLGetDescRec() | O | O | O | O | O |
SQLGetDiagField() | O | O | O | O | O |
SQLGetDiagRec() | O | O | O | O | O |
SQLGetEnvAttr() | O | O | O | O | O |
SQLGetFunctions() | O | O | O | O | O |
SQLGetInfo() | O | O | O | O | O |
SQLGetStmtAttr() | O | O | O | O | O |
SQLGetTypeInfo() | O | O | O | O | O |
SQLMoreResults() | O | O | O | O | O |
SQLNumParams() | O | O | O | O | O |
SQLNumResultCols() | O | O | O | O | O |
SQLParamData() | O | O | O | O | O |
SQLPrepare() | O | O | O | O | O |
SQLPrimaryKeys() | O | O | O | O | O |
SQLProcedureColumns() | O | O | O | O | O |
SQLProcedures() | O | O | O | O | O |
SQLPutData() | O | O | O | O | O |
SQLRowCount() | O | O | O | O | O |
SQLSetConnectAttr() | O | O | O | O | O |
SQLSetCursorName() | O | O | O | O | O |
SQLSetDescField() | O | O | O | O | O |
SQLSetDescRec() | O | O | O | O | O |
SQLSetEnvAttr() | O | O | O | O | O |
SQLSetPos() | O | O | O | O | O |
SQLSetStmtAttr() | O | O | O | O | O |
SQLSpecialColumns() | O | O | O | O | O |
SQLStatistics() | O | O | O | O | O |
SQLTablePrivileges() | O | O | O | O | O |
SQLTables() | O | O | O | O | O |
The following is a feature matrix for API other than the ODBC standard API.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
xa_open | O | O | O | O | O |
xa_close | O | O | O | O | O |
xa_start | O | O | O | O | O |
xa_end | O | O | O | O | O |
xa_rollback | O | O | O | O | O |
xa_prepare | O | O | O | O | O |
xa_commit | O | O | O | O | O |
xa_recover | O | O | O | O | O |
xa_forget | O | O | O | O | O |
SQLGetXaSwitch | O | O | O | O | O |
SQLGetXaConnectionHandle | O | O | O | O | O |
SQLGetGroupCount | X | O | O | O | O |
SQLGetGroupIDs | X | O | O | O | O |
SQLGetGroupName | X | O | O | O | O |
SQLGetSuitableGroupID | X | O | O | O | O |
JDBC
The following is a class feature matrix for JDBC.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
CallableStatement | X | O | O | O | O |
CommonDataSource | O | O | O | O | O |
Connection | O | O | O | O | O |
ConnectionPoolDataSource | O | O | O | O | O |
DatabaseMetaData | O | O | O | O | O |
DataSource | O | O | O | O | O |
Driver | O | O | O | O | O |
ParameterMetaData | O | O | O | O | O |
PooledConnection | O | O | O | O | O |
PreparedStatement | O | O | O | O | O |
ResultSet | O | O | O | O | O |
ResultSetMetaData | O | O | O | O | O |
RowId | O | O | O | O | O |
Savepoint | O | O | O | O | O |
Statement | O | O | O | O | O |
XAConnection | O | O | O | O | O |
XADataSource | O | O | O | O | O |
XAResource | O | O | O | O | O |
GoldilocksInterval | O | O | O | O | O |
GoldilocksTypes | O | O | O | O | O |
Embedded SQL
Precompiler Option
The following is a feature matrix for precompiler option.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--help | O | O | O | O | O |
--include-path | O | O | O | O | O |
--no-prompt | O | O | O | O | O |
--output | O | O | O | O | O |
--unsafe-null | O | O | O | O | O |
--version | O | O | O | O | O |
--no-lineinfo | X | O | O | O | O |
--char_map | X | O | O | O | O |
--cumulative | X | X | O | O | O |
--autocommit | X | X | X | O | O |
--parse | X | X | O | O | O |
Embedded SQL-only Syntax
The following is a feature matrix of embedded SQL-only syntax.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
EXEC SQL AT | O | O | O | O | O |
EXEC SQL ATOMIC INSERT | O | O | O | O | O |
EXEC SQL AUTOCOMMIT | O | O | O | O | O |
EXEC SQL BEGIN DECLARE SECTION | O | O | O | O | O |
EXEC SQL COMMIT RELEASE | O | O | O | O | O |
EXEC SQL CONNECT | O | O | O | O | O |
EXEC SQL CONTEXT ALLOCATE | O | O | O | O | O |
EXEC SQL CONTEXT FREE | O | O | O | O | O |
EXEC SQL CONTEXT USE | O | O | O | O | O |
EXEC SQL DISCONNECT | O | O | O | O | O |
EXEC SQL END DECLARE SECTION | O | O | O | O | O |
EXEC SQL FOR | O | O | O | O | O |
EXEC SQL GET GROUPID | X | O | O | O | O |
EXEC SQL INCLUDE | O | O | O | O | O |
EXEC SQL INCLUDE SQLCA | O | O | O | O | O |
EXEC SQL OPTION | O | O | O | O | O |
EXEC SQL ROLLBACK RELEASE | O | O | O | O | O |
EXEC SQL WHENEVER | O | O | O | O | O |
EXEC SQL BEGIN ARGUMENT SECTION | X | X | X | O | O |
EXEC SQL END ARGUMENT SECTION | X | X | X | O | O |
Host Variable Data Type
The following is a feature matrix for embedded SQL data type which can be used for HOST variables.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
C native type | O | O | O | O | O |
struct, union | O | O | O | O | O |
typedef | O | O | O | O | O |
VARCHAR | O | O | O | O | O |
LONG VARCHAR | O | O | O | O | O |
BINARY | O | O | O | O | O |
LONG VARBINARY | O | O | O | O | O |
BOOLEAN | O | O | O | O | O |
NUMBER | O | O | O | O | O |
DATE | O | O | O | O | O |
TIME | O | O | O | O | O |
TIME WITH TIMEZONE | O | O | O | O | O |
TIMESTAMP | O | O | O | O | O |
TIMESTAMP WITH TIMEZONE | O | O | O | O | O |
INTERVAL YEAR | O | O | O | O | O |
INTERVAL MONTH | O | O | O | O | O |
INTERVAL DAY | O | O | O | O | O |
INTERVAL HOUR | O | O | O | O | O |
INTERVAL MINUTE | O | O | O | O | O |
INTERVAL SECOND | O | O | O | O | O |
INTERVAL YEAR TO MONTH | O | O | O | O | O |
INTERVAL DAY TO HOUR | O | O | O | O | O |
INTERVAL DAY TO MINUTE | O | O | O | O | O |
INTERVAL DAY TO SECOND | O | O | O | O | O |
INTERVAL HOUR TO MINUTE | O | O | O | O | O |
INTERVAL HOUR TO SECOND | O | O | O | O | O |
INTERVAL MINUTE TO SECOND | O | O | O | O | O |
Dynamic SQL
The following is a feature matrix for dynamic SQL.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
SELECT .. INTO | O | O | O | O | O |
EXECUTE IMMEDIATE sql | O | O | O | O | O |
PREPARE stmt | O | O | O | O | O |
EXECUTE stmt | O | O | O | O | O |
DECLARE cursor FOR sql | O | O | O | O | O |
DECLARE cursor FOR stmt | O | O | O | O | O |
OPEN cursor | O | O | O | O | O |
OPEN cursor USING | O | O | O | O | O |
FETCH cursor INTO | O | O | O | O | O |
CLOSE cursor | O | O | O | O | O |
DELETE .. WHERE CURRENT OF cursor | O | O | O | O | O |
UPDATE .. WHERE CURRENT OF cursor | O | O | O | O | O |
PyDBC
Module
The following is a method feature matrix for pygoldilocks provided by PyDBC.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
connect | X | O | O | O | O |
Date | X | O | O | O | O |
Time | X | O | O | O | O |
Timestamp | X | O | O | O | O |
DateFromTicks | X | O | O | O | O |
TimeFromTicks | X | O | O | O | O |
TimestampFromTicks | X | O | O | O | O |
Binary | X | O | O | O | O |
STRING | X | O | O | O | O |
BINARY | X | O | O | O | O |
NUMBER | X | O | O | O | O |
DATETIME | X | O | O | O | O |
ROWID | X | O | O | O | O |
getDecimalSeparator | X | O | O | O | O |
setDecimalSeparator | X | O | O | O | O |
The following is an attribute feature matrix for pygoldilocks module.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
apilevel | X | O | O | O | O |
threadsafety | X | O | O | O | O |
paramstyle | X | O | O | O | O |
version | X | O | O | O | O |
lowercase | X | O | O | O | O |
Connection
The following is a method feature matrix for connection object.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
cursor | X | O | O | O | O |
commit | X | O | O | O | O |
rollback | X | O | O | O | O |
close | X | O | O | O | O |
getinfo | X | O | O | O | O |
execute | X | O | O | O | O |
set_attr | X | O | O | O | O |
The following is an attribute feature matrix for connection object.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
autocommit | X | O | O | O | O |
searchescape | X | O | O | O | O |
timeout | X | O | O | O | O |
Cursor
The following is a method feature matrix for cursor object.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
excute | X | O | O | O | O |
executemany | X | O | O | O | O |
fetchone | X | O | O | O | O |
fetchall | X | O | O | O | O |
fetchmany | X | O | O | O | O |
commit | X | O | O | O | O |
rollback | X | O | O | O | O |
skip | X | O | O | O | O |
nextset | X | O | O | O | O |
close | X | O | O | O | O |
setinputsizes | X | O | O | O | O |
setoutputsize | X | O | O | O | O |
callproc | X | O | O | O | O |
callfunc | X | O | O | O | O |
tables | X | O | O | O | O |
columns | X | O | O | O | O |
statistics | X | O | O | O | O |
rowIdColumns | X | O | O | O | O |
rowVerColumns | X | O | O | O | O |
primaryKeys | X | O | O | O | O |
foreignKeys | X | O | O | O | O |
procedures | X | O | O | O | O |
getTypeInfo | X | O | O | O | O |
The following is an attribute feature matrix for cursor object.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
Description | X | O | O | O | O |
rowcount | X | O | O | O | O |
arraysize | X | O | O | O | O |
connection | X | O | O | O | O |
fast_executemany | X | O | O | O | O |
Row
The following is an attribute feature matrix for row object.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
cursor_description | X | O | O | O | O |
Utility
gcreatedb
Command Usage
The following is a feature matrix for command usage of gcreatedb.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--character_set | O | O | O | O | O |
--char_length_units | O | O | O | O | O |
--cluster | X | O | O | O | O |
--db_comment | O | O | O | O | O |
--help | O | O | O | O | O |
--host | X | O | O | O | O |
--member | X | O | O | O | O |
--port | X | O | O | O | O |
--silent | O | O | O | O | O |
--timezone | O | O | O | O | O |
glsnr
Command Usage
The following is a feature matrix for command usage of glsnr.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--help | O | O | O | O | O |
--home | X | O | O | O | O |
--silent | O | O | O | O | O |
--start | O | O | O | O | O |
--status | O | O | O | O | O |
--stop | O | O | O | O | O |
Configuration File
The following is a feature matrix for configuration of glsnr.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
BACKLOG | O | O | O | O | O |
DEFAULT_CS_MODE | O | O | O | O | O |
LISTENER_LOG_DIR | X | O | O | O | O |
LISTEN_PORT | O | O | O | O | O |
TCP_EXCLUDED | O | O | O | O | O |
TCP_INVITED | O | O | O | O | O |
TCP_HOST | O | O | O | O | O |
TCP_VALIDNODE_CHECKING | O | O | O | O | O |
TIMEOUT | O | O | O | O | O |
USR_DIR | X | O | O | O | O |
gsql/ gsqlnet
Command Usage
The following is a feature matrix for command usage of gsql.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
username password | O | O | O | O | O |
--as {SYSDBA|ADMIN} | O | O | O | O | O |
--conn-string | O | O | O | O | O |
--dsn | O | O | O | O | O |
--enable-color | O | O | O | O | O |
--help | O | O | O | O | O |
--import | O | O | O | O | O |
--no-prompt | O | O | O | O | O |
--prompt | O | O | O | O | O |
--silent | O | O | O | O | O |
--version | O | O | O | O | O |
Interactive gsql Command
The following is a feature matrix for interactive gsql command which is used in gsql prompt state.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
| O | O | O | O | O |
| O | O | O | O | O |
| X | O | O | O | O |
| X | O | O | O | O |
| X | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| X | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| X | O | O | O | O |
| X | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| X | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| X | X | X | X | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
| O | O | O | O | O |
gloader/ gloadernet
Command Usage
The following is a feature matrix for command usage of gloader.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
username password | O | O | O | O | O |
--array | O | O | O | O | O |
--atomic | O | O | O | O | O |
--bad | O | O | O | O | O |
--buffered | O | O | O | O | O |
--commit | O | O | O | O | O |
--control | O | O | O | O | O |
--data | O | O | O | O | O |
--dsn | O | O | O | O | O |
--errors | O | O | O | O | O |
--export | O | O | O | O | O |
--fieldterm | X | O | O | O | O |
--filesize | O | O | O | O | O |
--format | O | O | O | O | O |
--help | O | O | O | O | O |
--import | O | O | O | O | O |
--lineterm | X | O | O | O | O |
--log | O | O | O | O | O |
--no-prompt | O | O | O | O | O |
--parallel | O | O | O | O | O |
--propagation | O | O | O | O | O |
--qualifier | X | O | O | O | O |
--silent | O | O | O | O | O |
--AsTIMESTAMP | O | O | O | O | O |
--where | X | O | O | O | O |
--group-id | X | O | O | O | O |
--directio-size | X | O | O | O | O |
Control File Syntax
The following is a feature matrix for control file syntax of gloader.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
CHARACTERSET | O | O | O | O | O |
FIELDS TERMINATED BY | O | O | O | O | O |
OPTIONALLY ENCLOSED BY | O | O | O | O | O |
TABLE table_name | O | O | O | O | O |
TABLE schema_name.table_name | O | O | O | O | O |
LTRIM | X | O | O | O | O |
RTRIM | X | O | O | O | O |
LINES TERMINATED BY | X | O | O | O | O |
WHERE | X | O | O | O | O |
gdump
Command Usage
The following is a feature matrix for command usage of gdump.
Item | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Common arguments | --silent | O | O | O | O | O |
File type | BACKUP | O | O | O | O | O |
COMMIT_LOG | X | O | O | O | O | |
CONTROL | O | O | O | O | O | |
DATA | O | O | O | O | O | |
LOG | O | O | O | O | O | |
LOG_BUFFER | X | O | O | O | O | |
PEND_BUFFER | X | O | O | O | O | |
PROPERTY | O | O | O | O | O | |
BACKUP file arguments | --body | O | O | O | O | O |
--tbs | O | O | O | O | O | |
--number | O | O | O | O | O | |
--fetch | O | O | O | O | O | |
CONTROL file arguments | --section | O | O | O | O | O |
DATA file arguments | --header | O | O | O | O | O |
--number | O | O | O | O | O | |
--fetch | O | O | O | O | O | |
LOG file arguments | --all | X | O | O | O | O |
--fetch | O | O | O | O | O | |
--header | X | O | O | O | O | |
--number | O | O | O | O | O | |
--offset | O | O | O | O | O |
tablediff
Configuration File
The following is a feature matrix for configuration file of tablediff.
Item | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Source table | SOURCE_PASSWORD | O | O | O | O | O |
SOURCE_SCHEMA | O | O | O | O | O | |
SOURCE_TABLE | O | O | O | O | O | |
SOURCE_URL | O | O | O | O | O | |
SOURCE_USER | O | O | O | O | O | |
Target table | TARGET_PASSWORD | O | O | O | O | O |
TARGET_SCHEMA | O | O | O | O | O | |
TARGET_TABLE | O | O | O | O | O | |
TARGET_URL | O | O | O | O | O | |
TARGET_USER | O | O | O | O | O | |
Sync operation | TARGET_INSERT | O | O | O | O | O |
TARGET_UPDATE | O | O | O | O | O | |
TARGET_DELETE | O | O | O | O | O | |
SOURCE_INSERT | O | O | O | O | O | |
Operation options | DIFF_BIN_FILE | O | O | O | O | O |
DIFF_OUT_FILE | O | O | O | O | O | |
DISPLAY_CALL_STACK | O | O | O | O | O | |
DISPLAY_ROW_UNIT | O | O | O | O | O | |
EXCLUDE_COLUMNS | O | O | O | O | O | |
LOGGING_ON_DIFF | O | O | O | O | O | |
LOGGING_ON_SUCCESS | O | O | O | O | O | |
JOB_QUEUE_SIZE | O | O | O | O | O | |
JOB_THREAD | O | O | O | O | O | |
JOB_UNIT_SIZE | O | O | O | O | O | |
PARTITION_RANGE | O | O | O | O | O | |
SYNC_OUT_FILE | O | O | O | O | O | |
WHERE_CLAUSE | O | O | O | O | O |
gsyncher
Command Usage
The following is a feature matrix for command usage of gsyncher.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--log | O | O | O | O | O |
--silent | O | O | O | O | O |
--home | X | O | O | O | O |
--copy-right | O | O | O | O | O |
--backup-path | O | O | O | O | O |
--help | O | O | O | O | O |
gmon
Command Usage
The following is a feature matrix for command usage of gmon.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--start | X | O | O | O | O |
--stop | X | O | O | O | O |
--status | X | O | O | O | O |
--home | X | O | O | O | O |
--uds_dir | X | X | O | O | O |
--silent | X | O | O | O | O |
--no-copyright | X | O | O | O | O |
--help | X | O | O | O | O |
gtrclogger
Command Usage
The following is a feature matrix for command usage of gtrclogger.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--dir | X | O | O | O | O |
--help | X | O | O | O | O |
--port | X | O | O | O | O |
--start | X | O | O | O | O |
--stop | X | O | O | O | O |
glocator
Command Usage
The following is a feature matrix for command usage of glocator.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--create | X | O | O | O | O |
--start | X | O | O | O | O |
--stop | X | O | O | O | O |
--conf | X | O | O | O | O |
--status | X | O | O | O | O |
--sync | X | O | O | O | O |
--silent | X | O | O | O | O |
--no-copyright | X | O | O | O | O |
--help | X | O | O | O | O |
Configuration File
The following is a feature matrix for configuration file of glocator.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
PORT | X | O | O | O | O |
WORKER_COUNT | X | O | O | O | O |
SESSION_QUEUE_SIZE | X | O | O | O | O |
SESSION_ALLOCATOR_SIZE | X | O | O | O | O |
PACKET_ALLOCATOR_SIZE | X | O | O | O | O |
SYSTEM_LOGGER_DIR | X | O | O | O | O |
SYSTEM_UDS_DIR | X | O | O | O | O |
LOCATION_FILE_DIR | X | O | O | O | O |
LOCATION_FILE_SIZE | X | O | O | O | O |
LOCATION_FILE_MAX_SIZE | X | O | O | O | O |
SESSION_TIMEOUT | X | O | O | O | O |
FAILOVER_TIMEOUT | X | O | O | O | O |
ALTERNATE_LOCATORS | X | O | O | O | O |
SYNC_RETRY_COUNT | X | O | O | O | O |
SYNC_RESPONSE_TIMEOUT | X | O | O | O | O |
gagent
Command Usage
The following is a feature matrix for command usage of gagent.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--start | X | O | O | O | O |
--stop | X | O | O | O | O |
--conf | X | O | O | O | O |
--status | X | O | O | O | O |
--home | X | O | O | O | O |
--silent | X | O | O | O | O |
--no-copyright | X | O | O | O | O |
--help | X | O | O | O | O |
Configuration File
The following is a feature matrix for configuration file of gagent.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
PORT | X | O | O | O | O |
LOCATOR_HOST | X | O | O | O | O |
LOCATOR_PORT | X | O | O | O | O |
COMMAND_QUEUE_SIZE | X | O | O | O | O |
COMMAND_ALLOCATOR_SIZE | X | O | O | O | O |
PACKET_ALLOCATOR_SIZE | X | O | O | O | O |
SYSTEM_LOGGER_DIR | X | O | O | O | O |
SESSION_TIMEOUT | X | O | O | O | O |
UPDATE_LOCATION_TIME | X | O | O | O | O |
ALTERNATE_LOCATORS | X | O | O | O | O |
gloctl
Command Usage
The following is a feature matrix for command usage of gloctl.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--dsn | X | X | X | X | X |
--conf | X | O | O | O | O |
--ip | X | O | O | O | O |
--port | X | O | O | O | O |
--import | X | O | O | O | O |
--silent | X | O | O | O | O |
--no-copyright | X | O | O | O | O |
--help | X | O | O | O | O |
Configuration File
The following is a feature matrix for configuration file of gloctl.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
PORT | X | O | O | O | O |
LOCATOR_HOST | X | O | O | O | O |
LOCATOR_PORT | X | O | O | O | O |
Replication
cyclone
Command Usage
The following is a feature matrix for command usage of cyclone.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--conf | O | O | O | O | O |
--encrypt | X | O | O | O | O |
--group | O | O | O | O | O |
--help | O | O | O | O | O |
--key | X | O | O | O | O |
--master | O | O | O | O | O |
--reset | O | O | O | O | O |
--silent | O | O | O | O | O |
--slave | O | O | O | O | O |
--start | O | O | O | O | O |
--status | O | O | O | O | O |
--stop | O | O | O | O | O |
--sync | O | O | O | O | O |
--stand-alone | X | O | O | O | O |
--recovery | X | O | O | O | O |
--local | X | O | O | O | O |
--info | X | O | O | O | O |
Configuration File
The following is a feature matrix for configuration file of cyclone.
Configuration | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Common configuration | COMM_CHUNK_COUNT | O | O | O | O | O |
DSN | O | O | O | O | O | |
USER_ENCRYPT_PW | X | O | O | O | O | |
GROUP_NAME | O | O | O | O | O | |
HOST_IP | O | O | O | O | O | |
HOST_EXTERNAL_IP | X | O | O | O | O | |
HOST_PORT | O | O | O | O | O | |
PORT | O | O | O | O | O | |
PROTOCOL | X | O | O | O | O | |
USER_ID | O | O | O | O | O | |
USER_PW | O | O | O | O | O | |
HEARTBEAT_TIMEOUT | X | X | O | O | O | |
MASTER configuration | CAPTURE_TABLE | O | O | O | O | O |
LOG_PATH | O | O | O | O | O | |
READ_LOG_BLOCK_COUNT | O | O | O | O | O | |
TRANS_SORT_AREA_SIZE | O | O | O | O | O | |
TRANS_FILE_PATH | O | O | O | O | O | |
SYNCHER_COUNT | O | O | O | O | O | |
SYNC_ARRAY_SIZE | O | O | O | O | O | |
GIVEUP_INTERVAL | O | O | O | O | O | |
SKIP_COMMENT | X | X | O | O | O | |
SUPPLEMENTAL_LOG_FORCE_MODE | X | X | X | X | O | |
PACKET_COMPRESSION_MODE | X | X | X | O | O | |
SYNC_ORACLE_DRIVER | X | X | X | X | O | |
SYNC_MYSQL_DRIVER | X | X | X | X | O | |
SYNC_DB2_DRIVER | X | X | X | X | O | |
SYNC_TIBERO_DRIVER | X | X | X | X | O | |
LOG_CAPTURE_INTERVAL_1 | X | O | O | O | O | |
LOG_CAPTURE_INTERVAL_2 | X | O | O | O | O | |
SLAVE configuration | APPLIER_COUNT | O | O | O | O | O |
APPLY_ARRAY_SIZE | O | X | X | X | X | |
APPLY_COMMIT_SIZE | O | O | O | O | O | |
APPLY_TABLE | O | O | O | O | O | |
MASTER_IP | O | O | O | O | O | |
PROPAGATE_MODE | O | O | O | O | O | |
CLUSTER | X | O | O | O | O | |
UPDATE_APPLY_MODE | X | X | O | O | O | |
ORACLE_DRIVER | X | O | O | O | O | |
DB2_DRIVER | X | X | X | O | O | |
DB2_DATABASE | X | X | X | O | O | |
MYSQL_DRIVER | X | X | X | O | O | |
MYSQL_DATABASE | X | X | X | O | O | |
TIBERO_DRIVER | X | X | X | O | O |
clustone
Clustone is deprecated.
logmirror
Command Usage
The following is a feature matrix for command usage of logmirror.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--conf | O | O | O | O | O |
--help | O | O | O | O | O |
--infiniband | O | O | O | O | O |
--master | O | O | O | O | O |
--silent | O | O | O | O | O |
--slave | O | O | O | O | O |
--start | O | O | O | O | O |
--stop | O | O | O | O | O |
Configuration File
The following is a feature matrix for configuration file of logmirror.
Configuration | Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|---|
Common configuration | PORT | O | O | O | O | O |
MASTER configuration | DSN | O | O | O | O | O |
HOST_IP | O | O | O | O | O | |
HOST_PORT | O | O | O | O | O | |
PROTOCOL | X | O | O | O | O | |
USER_ID | O | O | O | O | O | |
USER_PW | O | O | O | O | O | |
SLAVE configuration | LOG_PATH | O | O | O | O | O |
MASTER_IP | O | O | O | O | O |
cymon
Command Usage
The following is a feature matrix for command usage of cymon.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--conf | O | O | O | O | O |
--help | O | O | O | O | O |
--cycle | O | O | O | O | O |
--key | X | O | O | O | O |
--start | O | O | O | O | O |
--stop | O | O | O | O | O |
--status | O | O | O | O | O |
cyfile
Command Usage
The following is a feature matrix for command usage of cyfile.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
--conf | X | X | O | O | O |
--help | X | X | O | O | O |
--reset | X | X | O | O | O |
--key | X | X | O | O | O |
--silent | X | X | O | O | O |
--info | X | X | O | O | O |
--start | X | X | O | O | O |
--stop | X | X | O | O | O |
--group | X | X | O | O | O |
--encrypt | X | X | O | O | O |
--status | X | X | O | O | O |
Configuration File
The following is a feature matrix for configuration file of cyfile.
Feature | 2.x | 3.x | 20c.1 | 21c.1 | 22c.1 |
|---|---|---|---|---|---|
DSN | X | X | O | O | O |
HOST_IP | X | X | O | O | O |
HOST_PORT | X | X | O | O | O |
PROTOCOL | X | X | O | O | O |
USER_ID | X | X | O | O | O |
USER_PW | X | X | O | O | O |
GROUP_NAME | X | X | O | O | O |
USER_ENCRYPT_PW | X | X | O | O | O |
CAPTURE_TABLE | X | X | O | O | O |
READ_LOG_BLOCK_COUNT | X | X | O | O | O |
TRANS_SORT_AREA_SIZE | X | X | O | O | O |
TRANS_FILE_PATH | X | X | O | O | O |
LOG_CAPTURE_INTERVAL_1 | X | X | O | O | O |
LOG_CAPTURE_INTERVAL_2 | X | X | O | O | O |
DATA_FILE_PATH | X | X | O | O | O |
DATA_FILE_PREFIX | X | X | O | O | O |
DATA_FILE_SIZE | X | X | O | O | O |
UPDATE_BEFORE_VALUE | X | X | O | O | O |
What's New in GOLDILOCKS 22c.1
This chapter briefly describes the features added to GOLDILOCKS 22c.1.
Architecture
System Architecture
It has not been changed.
Storage Internal
It has not been changed.
Transaction Control
It has not been changed.
Backup & Recovery
It has not been changed.
Database Information
DICTIONARY_SCHEMA
It has not been changed.
INFORMATION_SCHEMA
It has not been changed.
PERFORMANCE_VIEW_SCHEMA
V$OPEN_CURSOR has been added.
V$PROPERTY_ALIAS has been added.
V$DB_PROPERTY has been added.
V$LICENSE has been added.
Server Property
REBALANCE_SHARD_DIVISOR has been added.
SESSION_MEMORY_INIT_SIZE has been added.
SESSION_POOL_NEXT_SIZE has been added.
ADMIN_SESSION_POOL_INIT_SIZE has been added.
ADMIN_SESSION_POOL_NEXT_SIZE has been added.
The default value of DEFAULT_INDEX_PCTFREE has been changed to 10.
The default value of DEFAULT_MAXTRANS has been changed to 32.
The name of the property INCREMENTAL_CHECKPOINT_CRITERIA which sets the criteria to perform the incremental checkpoint of system, has been changed to BUFFER_DIRTY_PAGE_LIMIT. Its default value also has been changed to 0.
BUFFER_LRU_SCAN_PERCENT property has been added to improve the buffer management algorithm for the disk tablespace.
CLUSTER_CM_BUFFER_COUNT property, which specifies the number of communication buffers in a cluster environment, has been deprecated. Instead, LOCKABLE_DISPATCHER_CM_BUFFER_COUNT, LOCKLESS_DISPATCHER_CM_BUFFER_COUNT, and SYNC_DISPATCHER_CM_BUFFER_COUNT properties that specify the number of communication buffers for lockable, lockless, and synchronization dispatchers have been added.
The threshold of the table size determines whether to cache the tables created in the disk tablespace to buffer cache when performing a full scan. FULL_TABLE_SCAN_CACHING_THRESHOLD property, which sets this threshold value, has been added.
INST_HASH_TABLE_BUCKET_MAX_COUNT property has been added to set the maximum expected bucket counts of the hash instant table.
The maximum number of SQL to be cached in the plan cache used to be controlled by two properties. MAXIMUM_FLANGE_COUNT property was deprecated, so only PLAN_CACHE_SIZE controls the maximum number of SQL.
INDEX_LOGGING_THROTTLING property has been added to control the logging speed during index creation and rebuild operations.
SQL
SQL Element
Data Type
It has not been changed.
Function
DISTINCT Condition has been added.
SESSIONTIMEZONE has been added.
Window Function has been added.
Object
SQL Object
It has not been changed.
Cluster Object
ALTER DATABASE DROP OFFLINE SEGMENTS has been added.
ALTER DATABASE SYNCHRONIZE has been added.
ALTER TABLE name DROP OFFLINE SEGMENTS has been added.
ALTER TABLE name SYNCHRONIZE has been added.
SHARD DIVISOR and PARALLEL options have been added to ALTER DATABASE MOVE SHARD, ALTER DATABASE REBALANCE, ALTER DATABASE REBALANCE EXCLUDE CLUSTER GROUP, ALTER TABLE name MOVE SHARD, ALTER TABLE name REBALANCE, ALTER TABLE name REBALANCE EXCLUDE CLUSTER GROUP cluster_group_list.
ALTER TABLE REBUILD GLOBAL SECONDARY INDEX statement has been changed to ALTER TABLE name ALTER GLOBAL SECONDARY INDEX REBUILD.
SQL Language
DML
It has not been changed.
Query
Lateral Inline View
Lateral inline view has been added to from clause.
Table Function Derived Table
Table function derived table has been added to from clause.
WINDOW Clause
WINDOW clause has been added, which defines the execution range of the window function. For more information, refer to window clause.
Control Language
It has not been changed.
PSM Language
Table Function
TABLE ( table function column list ) statement has been added to return clause. The table function can be created by defining the table type when performing function DDL. For more information, refer to CREATE FUNCTION.
RETURN TABLE Statement
RETURN TABLE Statement has been added to the PSM statement.
Performance Improvement of PSM statement
The performance of PSM syntax has been improved as follows.
API
ODBC
TRACE_POLICY has been added to Data Source Configuration.
JDBC
It has been modified to prevent missing microsecond when outputting time type and timestamp type in string.
It supports the auto-generated key.
GoldilocksTypes.REF_CURSOR has been added.
GoldilocksPreparedStatement.setFixedCHAR(), a JDBC non standard function, has been added.
Embedded SQL
Precompiler Option
The --parse option has been added to gpec.
Embedded SQL-only Statement
gpec supports Declaring Function Argument.
PDO
It has not been changed.
PyDBC
It has not been changed.
Ruby
It has not been changed.
Hibernate
It has not been changed.
Utility
gcreatedb
It has not been changed.
glsnr
It has not been changed.
gsql/gsqlnet
\set sqlprompt command has been added.
gloader/gloadernet
It has not been changed.
gdump
It has not been changed.
tablediff
It has not been changed.
gsyncher
It has not been changed.
gmon
It has not been changed.
gtrclogger
It has not been changed.
glocator
It has not been changed.
gagent
It has not been changed.
gloctl
It has not been changed.
Replication
cyclone
A data migration feature to external databases (Oracle, DB2, MySQL, Tibero) has been added.
logmirror
It has not been changed.
cymon
It has not been changed.
cyfile
It has not been changed.
Patch Notes
22c.1.10 Patch Notes
ISSUE-7939 Full table scan may occur after adding a low-selectivity composite index
Description
An issue was identified where adding a low-selectivity composite index could cause a query that previously performed an index scan to perform a full table scan instead. This issue has been fixed. This behavior occurred only when all of the following conditions were satisfied: • The index previously used by the query is a composite index. • The query specifies '=' conditions for only a subset of the index key columns, rather than for all columns in the index.
Symptom
When a composite index contains both high-selectivity columns and low-selectivity columns, the optimizer may choose a full table scan instead of the existing index scan.
DROP TABLE t1;
COMMIT;
CREATE TABLE t1 ( c_good INTEGER
, c_bad_1 INTEGER
, c_bad_2 INTEGER
, c_bad_3 INTEGER
, c_bad_4 INTEGER
, c_bad_5 INTEGER );
CREATE INDEX idx1 ON t1( c_good
, c_bad_1
, c_bad_2
, c_bad_3
, c_bad_4 );
COMMIT;
BEGIN
FOR i IN 1 .. 10000 LOOP
INSERT INTO t1 VALUES ( i, 0, 0, 0, 0, 0 );
END LOOP;
END;
/
COMMIT;
ANALYZE TABLE t1;
COMMIT;In the example above, a composite index ( c_good, c_bad_1, c_bad_2, c_bad_3, c_bad_4) exists. The following query specifies filter conditions on only a subset of the index key columns ( c_good, c_bad_1, c_bad_2, c_bad_3 ), and therefore performs an index scan.
\explain plan
SELECT *
FROM t1
WHERE c_good = 999
AND c_bad_1 = 0
AND c_bad_2 = 0
AND c_bad_3 = 0
;
C_GOOD C_BAD_1 C_BAD_2 C_BAD_3 C_BAD_4 C_BAD_5
------ ------- ------- ------- ------- -------
999 0 0 0 0 0
1 row selected.
>>> start print plan
< Execution Plan >
======================================================================
| IDX | NODE DESCRIPTION | ROWS |
----------------------------------------------------------------------
| 0 | SELECT STATEMENT | 1 |
| 1 | QUERY BLOCK ("$QB_IDX_2") | 1 |
| 2 | INDEX ACCESS ("T1", "IDX1") | ( 1) 1 |
======================================================================
1 - TARGET : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4, T1.C_BAD_5
2 - READ INDEX COLUMN : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4
READ TABLE COLUMN : T1.C_BAD_5
MIN RANGE : T1.C_GOOD = 999 AND T1.C_BAD_1 = 0 AND T1.C_BAD_2 = 0 AND T1.C_BAD_3 = 0
MAX RANGE : T1.C_GOOD = 999 AND T1.C_BAD_1 = 0 AND T1.C_BAD_2 = 0 AND T1.C_BAD_3 = 0
<<< end print planHowever, if another composite index consisting of low-selectivity columns is added as follows, the query that previously performed an index scan may instead perform a full scan.
--##########################################
--# Add a Low-Selectivity Composite Index
--##########################################
CREATE INDEX idx2 ON t1( c_bad_2
, c_bad_3 );
COMMIT;
ANALYZE TABLE t1;
COMMIT;
\explain plan
SELECT *
FROM t1
WHERE c_good = 999
AND c_bad_1 = 0
AND c_bad_2 = 0
AND c_bad_3 = 0
;
C_GOOD C_BAD_1 C_BAD_2 C_BAD_3 C_BAD_4 C_BAD_5
------ ------- ------- ------- ------- -------
999 0 0 0 0 0
1 row selected.
>>> start print plan
< Execution Plan >
======================================================================
| IDX | NODE DESCRIPTION | ROWS |
----------------------------------------------------------------------
| 0 | SELECT STATEMENT | 1 |
| 1 | QUERY BLOCK ("$QB_IDX_2") | 1 |
| 2 | TABLE ACCESS ("T1") | 1 |
======================================================================
1 - TARGET : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4, T1.C_BAD_5
2 - READ COLUMN : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4, T1.C_BAD_5
PHYSICAL FILTER : T1.C_GOOD = 999 AND T1.C_BAD_1 = 0 AND T1.C_BAD_2 = 0 AND T1.C_BAD_3 = 0
<<< end print planWorkaround
Use an INDEX hint to force the query to perform an index scan.
\explain plan
SELECT /*+ INDEX( t1, idx1) */
*
FROM t1
WHERE c_good = 999
AND c_bad_1 = 0
AND c_bad_2 = 0
AND c_bad_3 = 0
;
C_GOOD C_BAD_1 C_BAD_2 C_BAD_3 C_BAD_4 C_BAD_5
------ ------- ------- ------- ------- -------
999 0 0 0 0 0
1 row selected.
>>> start print plan
< Execution Plan >
======================================================================
| IDX | NODE DESCRIPTION | ROWS |
----------------------------------------------------------------------
| 0 | SELECT STATEMENT | 1 |
| 1 | QUERY BLOCK ("$QB_IDX_2") | 1 |
| 2 | INDEX ACCESS ("T1", "IDX1") | ( 1) 1 |
======================================================================
1 - TARGET : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4, T1.C_BAD_5
2 - READ INDEX COLUMN : T1.C_GOOD, T1.C_BAD_1, T1.C_BAD_2, T1.C_BAD_3, T1.C_BAD_4
READ TABLE COLUMN : T1.C_BAD_5
MIN RANGE : T1.C_GOOD = 999 AND T1.C_BAD_1 = 0 AND T1.C_BAD_2 = 0 AND T1.C_BAD_3 = 0
MAX RANGE : T1.C_GOOD = 999 AND T1.C_BAD_1 = 0 AND T1.C_BAD_2 = 0 AND T1.C_BAD_3 = 0
<<< end print plan22c.1.9 Patch Notes
ISSUE-7805 The issue where memory allocated during the handling of the ODBC LONG VARCHAR and LONG VARBINARY types was not properly released has been fixed.
Description
A memory leak occurred for LONG VARCHAR and LONG VARBINARY columns during metadata reconstruction when the table schema was altered during a FETCH and another FETCH was performed on the same table.
Symptom
In a client-server (CS) environment, when querying data through ODBC, altering the table schema via an ALTER statement during a FETCH operation triggers metadata reconstruction. If the table contains LONG VARCHAR or LONG VARBINARY columns, memory dynamically allocated for those column types was not released properly, resulting in a memory leak.
Workaround
Before this issue was fixed, the safest approach was to avoid altering the table schema during a FETCH operation. If altering the schema was unavoidable, the affected SQLHSTMT handle had to be reallocated by calling SQLFreeHandle followed by SQLAllocHandle.
22c.1.8 Patch Notes
ISSUE-7782 A parse option has been added to gpec.
Description
The parse option has been added to gpec to control source parsing. The option can be set to none or partial, and if not specified, the default value is partial.
Symptom
N/A
Workaround
The patch is required.
ISSUE-7782 The code handling behavior of the gpec preprocessor has been modified.
Description
The gpec preprocessor has been updated to change how it handles code in branches that evaluate to false (#if, #elif, #else, #ifdef, #ifndef). Before this update, code in false branches was removed from the output. It now remains intact and is included in the output.
Symptom
In some cases, the gpec preprocessor was unable to recognize macros defined in certain header files. In such cases, gpec evaluated the relevant preprocessor conditions as false and deleted the associated code blocks. As a result, code that was valid in the actual compilation environment could be missing in the gpec output. In other words, discrepancies could arise between the gpec output and the actual build due to differences in preprocessor evaluation.
For example, when a gc file includes a header using the EXEC SQL INCLUDE statement, if that header references a macro defined in another header, gpec cannot interpret the macro and evaluates the condition as false. As a result, code that should not be removed may be deleted.
The following is an example of a header file not referenced by gpec:
#ifndef SYS_FLAG_H #define SYS_FLAG_H #define SYS_FEATURE_FLAG 1 #endif /* SYS_FLAG_H */
The following is an example of a header file successfully referenced by gpec:
#ifndef SYS_CONFIG_H #define SYS_CONFIG_H /* References a macro defined in another header */ #define ENABLE_FEATURE SYS_FEATURE_FLAG #endif /* SYS_CONFIG_H */
The following is an example gc file:
EXEC SQL INCLUDE sys_config.h;
int main(void)
{
#if ENABLE_FEATURE
/* In the actual compilation environment, SYS_FEATURE_FLAG == 1,
so this code should be included. */
feature_func();
#endif
return 0;
}Although sys_config.h refers to a macro defined in another header, gpec cannot interpret that macro. As a result, the ENABLE_FEATURE condition is evaluated as false, and code that is valid in the actual compilation environment may be removed from the gpec output.
Workaround
Preprocessor conditions and macros used in gc files should be defined within header files included using EXEC SQL INCLUDE.
ISSUE-5401 During Cyclone recovery, errors other than conflicts are now displayed.
Description
Previously, errors occurring in the recovery process were not logged in the trace log, so non-conflict errors could not be verified. This issue has now been resolved.
Symptom
Previously, errors occurring in the recovery process were not logged in the trace log, so errors could not be verified.
[2025-01-24 10:55:17.793633 THREAD(2503,139847152563968)] [APPLIER #1(SID:65)] Error Occurred. [2025-01-24 10:55:17.804159 THREAD(2503,139847100114688)] [HEARTBEAT(#0)] Finalize Done.
With this update, errors are now displayed during the recovery phase, and can be checked as follows.
[2025-01-24 10:55:17.793568 THREAD(2503,139847152563968)]
[APPLIER #1(SID:65)-INSERT] ERR-42R01(16357) : must be accessible to at least one member of group 'G2'
[TABLE_NAME : PUBLIC.TEST]
[PRIMARY KEY INFO]
[NAME:C1, VALUE:101]
[2025-01-24 10:55:17.793614 THREAD(2503,139847152563968)]
[Table Information](LSN:232028) - Analyze
- Master : PUBLIC.TEST
- Slave : PUBLIC.TEST
- Column Count : 2
- Physical Id : 100452
[2025-01-24 10:55:17.793633 THREAD(2503,139847152563968)]
[APPLIER #1(SID:65)] Error Occurred.
[2025-01-24 10:55:17.793655 THREAD(2503,139847152563968)]
ERR-HY000(46007): Internal error occurred (ztcdDoInsertNExecute(not unique constraint violated))
[2025-01-24 10:55:17.804159 THREAD(2503,139847100114688)]
[HEARTBEAT(#0)] Finalize Done.Workaround
The patch is required.
ISSUE-6503 A data migration feature has been added to Cyclone to support migration to external databases such as Oracle, DB2, MySQL, and Tibero.
Description
Previously, data synchronization was supported only when the slave was GOLDILOCKS; however, this feature extension allows data synchronization when the slave is Oracle, DB2, MySQL, or Tibero.
Symptom
In earlier versions, the SYNC feature did not operate when the slave target DB was not GOLDILOCKS.
Workaround
The patch is required.
ISSUE-7743 An issue that occurred while processing nested #if / #endif directives in the gpec preprocessor has been fixed.
Description
When processing #if preprocessor directives, the gpec preprocessor removes (replaces with empty strings) all statements up to the corresponding #endif directive if the condition is evaluated as false. However, when #if / #endif directives were used in a nested structure, some statements within the inner preprocessor blocks were not removed correctly. This issue has been identified and fixed. This fix applies not only to #if directives but also to all conditional preprocessor directives, including #elif, #else, #ifdef, and #ifndef.
Symptom
The following is a portion of a gc file that contains nested #if / #endif directives.
#if 0
#if 0
printf("error 1");
#else
printf("error 2");
#endif
printf("error 3");
#endifThe following is a portion of the generated c file produced by converting the above code using the gpec preprocessor:
printf("error 3");Due to the nested #if 0 conditions, all three printf statements should have been removed. However, the converted c file incorrectly retained the printf("error 3"); statement.
Workaround
Avoid using nested #if / #endif directives. Alternatively, statements should not be placed after an inner #endif directive, as shown below.
#if 0
#if 0
printf("error 1");
#else
printf("error 2");
#endif // Statements below this directive are not processed correctly.
printf("error 3");
#endifISSUE-7660 The gserver process did not terminate when an idle timeout occurred during IPC usage, and this issue has been fixed.
Description
When an idle timeout occurred during IPC usage, gserver cleaned up the session but continued waiting for the client to exit, leaving the gserver process running. This issue has now been resolved.
Symptom
A trace log indicated that the session was cleaned up due to an idle timeout during IPC usage.
[2025-12-01 17:52:02.791208 INSTANCE(GOLDILOCKS) THREAD(1554791,139737737000768)] [INFORMATION] [DEDICATE_SERVER] ERR-HYT00(13038): Exceeded maximum idle time [2025-12-01 17:52:02.836570 INSTANCE(GOLDILOCKS) THREAD(1554720,139906736981760)] [WARNING] [CLEANUP] cleaning local session - env(12), session(13.8), local transaction(-1), program(gsqlnet), pid(1554791), thread(139737737000768) [2025-12-01 17:52:02.836641 INSTANCE(GOLDILOCKS) THREAD(1554720,139906736981760)] [WARNING] [CLEANUP] cleaning up 1 sessions
However, the gserver process remained alive and did not terminate.
% ps -ef | grep gserver | grep ipc goldilocks 1554791 7156 0 17:52 pts/1 00:00:00 gserver --dedicated /tmp/unix-glsnr.11100.0 -x 2 --ipc
Workaround
Manually terminate the client process so that the gserver process exits as well.
ISSUE-7365 The monitoring information for Cyclone using Cymon has been updated with a new item.
Description
The CYCLONE_MONITOR_INFO table's MASTER_STATE and SLAVE_STATE fields now include the SYNCING state, in addition to N/A, READY, and RUNNING. The SYNCING state is shown during data synchronization when the –sync option is used.
gSQL> \set vertical on
gSQL> select * from cyclone_monitor_info;
GROUP_NAME # GROUP1
TIME # 2025-10-14 12:03:02
MASTER_STATE # SYNCING
SLAVE_STATE # SYNCING
MASTER_PORT # 21102
SLAVE_IP # 127.0.0.1
REDO_LOG_FILESEQ # 0
REDO_LOG_BLOCKSEQ # 101423
CAPTURE_FILESEQ # 0
CAPTURE_BLOCKSEQ # 0
APPLY_FILESEQ # 0
APPLY_BLOCKSEQ # 0
CAPTURE_INTERVAL # 101423
CAPTURE_INTERVAL_SIZE # 51928576
TOTAL_TX_COUNT # 0
CAPTURE_TX_COUNT # 0
CAPTURE_COMMIT_LSN # 0
APPLY_COMMIT_LSN # 0Symptom
N/A
Workaround
The patch is required.
ISSUE-7633 The SUPPLEMENTAL_LOG_FORCE_MODE environment variable has been added.
Description
When CYCLONE is executed and supplemental logging is disabled on the target table for replication, setting SUPPLEMENTAL_LOG_FORCE_MODE to 1 (Enable) forcibly enables supplemental logging on the table, then starts the replication.
Symptom
N/A
Workaround
The patch is required.
22c.1.7 Patch Notes
ISSUE-7412 An issue was fixed where a column in the instant hash table could not be read correctly when it spanned multiple pages.
Description
In some cases, when a column in the instant hash table spanned multiple pages, the column could not be read or filters were not applied correctly, and this issue has been fixed.
Symptom
For example, when executing the following query, the values of name1 and name2 should always be the same, but rows with mismatched values such as (null, 5) were returned.
SELECT *
FROM
(
SELECT RTRIM( name1 )
, RTRIM( name2 )
FROM ( SELECT CAST( level AS CHAR( 2000 ) ) AS name1
, CAST( level AS CHAR( 2000 ) ) AS name2
FROM dual
CONNECT BY level <= 5
UNION DISTINCT
SELECT 'X' AS name1
, 'X' AS name2
FROM dual
)
) ORDER BY 1;
RTRIM( NAME1 ) RTRIM( NAME2 )
-------------- --------------
1 1
2 2
3 3
4 4
X X
null 5
6 rows selected.Workaround
The patch is required.
ISSUE-7353 Fixed missing data issue when changing array size during ODBC fetch
Description
An issue was identified in the ODBC client-server environment where changing the array size dynamically during data fetch caused data retrieval to fail. This issue has been resolved.
Symptom
When retrieving data using ODBC in a client-server (CS) environment, an issue occurred where data could not be fetched correctly if the array size was changed during the fetch operation. This problem commonly appeared when using the SQLExtendedFetch, SQLFetch, and SQLFetchScroll functions, and was particularly noticeable when the fetch started with a small array size (e.g., 1 row) and was later changed to a larger array size (e.g., 100 rows).
As a specific symptom, after changing the SQL_ROWSET_SIZE or SQL_ATTR_ROW_ARRAY_SIZE attribute, SQL_NO_DATA was returned prematurely, resulting in only a subset of the data being retrieved even though more data was actually available.
Workaround
Prior to applying the patch for this issue, the most reliable approach was to keep the array size fixed rather than changing it. If changing the array size was unavoidable, the recommended method was to close the current cursor using the SQLCloseCursor function and then re-execute the query so that the fetch would begin with the new array size. When stability was more important than performance, the array size could be set to 1 to fetch data one row at a time.
22c.1.6 Patch Notes
ISSUE-7094 The handling of NUMA_MAP for CPU count restrictions in the license policy has been improved.
Description
Previously, if the total number of CPUs in the system exceeded the number allowed by the license, a license error would occur regardless of how many CPUs were actually used. However, to accommodate the need to selectively use only a subset of CPUs, the license policy has been updated. Now, if the number of CPUs specified in the NUMA_MAP setting of the goldilocks.properties.conf file is within the licensed limit, the program can run without error.
Symptom
When the total number of CPUs on the system exceeded the number specified in the license, the program determined it to be a license violation and returned an error. Even if the user limited the number of CPUs used through the NUMA_MAP setting, the program still validated the license based on the total CPU count of the system, resulting in execution failure.
Workaround
The patch is required.
ISSUE-7045 The restriction on using JSON aggregation functions, including those with RETURNING LONG VARCHAR, with GROUP BY has been removed.
Description
The restriction on using JSON aggregation functions that include RETURNING LONG VARCHAR with GROUP BY has been removed.
Symptom
An error occurred when using JSON aggregation functions including RETURNING LONG VARCHAR together with GROUP BY, as shown below.
CREATE TABLE t1 ( id INTEGER, data VARCHAR(1500) );
INSERT INTO t1 VALUES ( 1, 'A' );
INSERT INTO t1 VALUES ( 1, 'B' );
INSERT INTO t1 VALUES ( 2, 'A' );
INSERT INTO t1 VALUES ( 2, 'B' );
INSERT INTO t1 VALUES ( 2, 'C' );
INSERT INTO t1 VALUES ( 2, 'D' );
INSERT INTO t1 VALUES ( 3, RPAD( 'A', 1500, '_' ) );
INSERT INTO t1 VALUES ( 3, RPAD( 'B', 1500, '_' ) );
INSERT INTO t1 VALUES ( 3, RPAD( 'C', 1500, '_' ) );
COMMIT;
gSQL>
SELECT id
, JSON_ARRAYAGG( data RETURNING LONG VARCHAR ) AS json_result
FROM t1
WHERE id <= 3
GROUP BY id
;
ERR-42000(16246): illegal use of LONG VARCHAR data type :
, JSON_ARRAYAGG( data RETURNING LONG VARCHAR ) AS json_result
*
ERROR at line 2:After the modification, it can be used without restrictions as shown below.
gSQL>
SELECT id, JSON_OBJECTAGG( 'data' VALUE data RETURNING LONG VARCHAR ) AS json_string
FROM t1
WHERE id <= 3
GROUP BY id
ORDER BY id
;
ID
--
JSON_STRING
----------------------------------------------------------------------------------------------------
1
{"data":"A","data":"B"}
2
{"data":"A","data":"B","data":"C"}
3
{"data":"A___
...
Ellipsis
...
_________","data":"B______
...
Ellipsis
...
_______","data":"C_____
...
Ellipsis
...
________"}
3 rows selected.Workaround
Change the FROM clause to an in-line view that includes an ORDER BY clause as shown below.
gSQL>
SELECT id, JSON_ARRAYAGG( data RETURNING LONG VARCHAR ) AS json_string
FROM ( SELECT id, data
FROM t1
WHERE id <= 3
ORDER BY id
)
GROUP BY id
;
ID
--
JSON_STRING
----------------------------------------------------------------------------------------------------
1
["A","B"]
2
["A","B","C"]
3
["A____________________________________
...
...
Ellipsis
...
...
________"]
3 rows selected.22c.1.5 Patch Notes
ISSUE-6974 The JSON string constructor function has been added.
Description
The JSON String Constructor function has been added.
Symptom
N/A
Workaround
The patch is required.
ISSUE-6157 4K disk sectors are supported.
Description
The system supports the 4096-byte (4K advanced format) disk sector size adopted in recently released HDDs.
Symptom
DIRECT_IO was previously defined as 512 bytes, which prevented support for the 4096-byte (4K Advanced Format) disk sector size used in recently released HDDs. The definition has been updated to support 4K sector sizes.
Workaround
The patch is required.
ISSUE-6939 When using the offset limit clause during an IN KEY RANGE scan, incorrect results may occur.
Description
If the IN KEY RANGE scan is used when executing a query that includes an OFFSET clause, incorrect results may occur. This issue has been fixed.
Symptom
When performing an IN KEY RANGE scan on a query that includes OFFSET LIMIT clause, the OFFSET and LIMIT values may not be accumulated correctly, leading to more rows being skipped or returned than intended.
gSQL> CREATE TABLE t1 ( c1 INTEGER );
Table created.
gSQL> INSERT INTO t1 VALUES ( 1 ), ( 2 ), ( 3 ), ( 4 ), ( 5 );
5 rows created.
gSQL> CREATE INDEX IDX_t1 ON t1 ( c1 );
Index created.
gSQL> \EXPLAIN PLAN
SELECT /*+ FULL(t1) */ * FROM t1 WHERE c1 IN ( 2, 3, 5 ) OFFSET 2 LIMIT 10;
C1
--
5
1 row selected.
>>> start print plan
< Execution Plan >
==================================================================================================
| IDX | NODE DESCRIPTION | ROWS |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | 1 |
| 1 | QUERY BLOCK ("$QB_IDX_2") | 1 |
| 2 | TABLE ACCESS ("T1") | 1 |
==================================================================================================
1 - TARGET : T1.C1
2 - CLONED
READ COLUMN : T1.C1
PHYSICAL FILTER : ( T1.C1 ) IN ( 2, 3, 5 )
<<< end print plan
--# BUGBUG
gSQL> \EXPLAIN PLAN
SELECT /*+ IN_KEY_RANGE(t1) */ * FROM t1 WHERE c1 IN ( 2, 3, 5 ) OFFSET 2 LIMIT 10;
no rows selected.
>>> start print plan
< Execution Plan >
==================================================================================================
| IDX | NODE DESCRIPTION | ROWS |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | 0 |
| 1 | QUERY BLOCK ("$QB_IDX_2") | 0 |
| 2 | INDEX ACCESS ("T1", "IDX_T1") | ( 3) 0 |
==================================================================================================
1 - TARGET : T1.C1
2 - CLONED
READ INDEX COLUMN : T1.C1
IN KEY RANGE
MIN RANGE : T1.C1 = ?
MAX RANGE : T1.C1 = ?
<<< end print planWorkaround
The patch is required.
ISSUE-6845 A processing error occurs due to the failure to initialize the giveup information during partial rollback.
Description
There was an issue where the giveup-related variables were not initialized when a giveup occurred during partial rollback. To resolve this issue, the giveup is now handled as part of the partial rollback.
Symptom
In situations where partial rollback should occur, the remaining giveup information causes unintended giveup.
Workaround
The patch is required.
ISSUE-6803 Access to invalid segment hint memory may occur.
Description
If the number of replacements in the segment hint cache exceeds the signed integer range (2147483647), it may result in reading or writing outside the segment hint memory space. This can lead to segment faults and abnormal behavior, and the error has been fixed.
Symptom
It is possible to read or write outside the allocated memory range, which can lead to segment faults and abnormal behavior.
Workaround
The patch is required.
ISSUE-6797 The session fatal in Gmaster is handled as a system fatal.
Description
When a session fatal occurs in the Gmaster thread, a hang is triggered, preventing normal cleanup, so it is handled as a system fatal.
Symptom
When a session fatal occurs in the Gmaster thread, it causes a hang.
Workaround
The patch is required.
ISSUE-6687 When the redo log members are replicated, the cyclone is unable to read the next redo log after a redo log switch.
Description
When the redo log members are replicated, the cyclone fails to handle it correctly after a log switch, and this error has been fixed.
Symptom
The cyclone continuously waits for the next file without replication being implemented.
Workaround
Remove the redo log member and restart the cyclone.
ISSUE-6605 If the RETURNING clause is used in an UPSERT statement, it will result in an error."
Description
If the RETURNING clause is used in an UPSERT statement, an error will occur during the INSERT operation because there are no duplicate key values.
Symptom
When using the RETURNING clause in an UPSERT statement, an error will occur if the order of the columns specified in the RETURNING clause differs from the order of the columns in the base table.
gSQL> CREATE TABLE t1( c1 INTEGER, c2 INTEGER, c3 INTEGER ); Table created. gSQL> CREATE UNIQUE INDEX uni_idx_t1 ON t1 ( c1 ); Index created. --# BUGBUG --# result : 1 3 gSQL> INSERT INTO t1 VALUES ( 1, 2, 3 ) ON DUPLICATE KEY DO UPDATE c1 = c1 + 1 RETURN c1, c3; C1 C3 -- -- 1 2 1 row created. --# BUGBUG --# result : 1 2 3 gSQL> SELECT * FROM t1; C1 C2 C3 -- -- ---- 1 2 null 1 row selected.
Workaround
The patch is required.
ISSUE-6575 An error occurs when only the fields of a record type variable are specified in the INTO clause of a FETCH statement.
Description
An error occurs if fields of a record type variable are specified, even when the number of targets of the cursor in the FETCH statement matches the number of targets in the INTO clause.
Symptom
An error occurs even when the number of targets in the cursor's SELECT statement matches the number of targets in the FETCH INTO clause.
gSQL> DECLARE TYPE rec1 IS RECORD( c1 INTEGER , c2 INTEGER ); v_rec rec1; CURSOR cur1 IS SELECT 100 FROM dual; BEGIN OPEN cur1; FETCH cur1 INTO v_rec.c2; CLOSE cur1; END; / ERR-2F000(17032): PSM compilation error : (1) at (8:3): ERR-2F000(17040): fetch target count mismatch
It has now been modified to operate correctly.
gSQL> DECLARE TYPE rec1 IS RECORD( c1 INTEGER , c2 INTEGER ); v_rec rec1; CURSOR cur1 IS SELECT 100 FROM dual; BEGIN OPEN cur1; FETCH cur1 INTO v_rec.c2; CLOSE cur1; END; / Anonymous PL block executed.
Workaround
Use a scalar type variable.
gSQL> DECLARE TYPE rec1 IS RECORD( c1 INTEGER , c2 INTEGER ); v_rec rec1; var1 INTEGER; CURSOR cur1 IS SELECT 100 FROM dual; BEGIN OPEN cur1; FETCH cur1 INTO var1; v_rec.c2 := var1; CLOSE cur1; END; / Anonymous PL block executed.
ISSUE-6557 When using an outer join, if functions such as DECODE, stored functions, or CONCAT that include columns from the right table are in the WHERE clause, it can lead to incorrect results.
Description
When functions such as DECODE, stored functions, or CONCAT that include columns from the right table exist in the WHERE clause, the following outer join operation elimination should not be applied; however, it was actually applied, resulting in an error.
The left outer join was transformed into an inner join.
The full outer join was transformed into a left outer join.
Symptom
In cases where outer join operation elimination occurs as follows, the inclusion of DECODE, stored functions, etc., in the WHERE clause can lead to incorrect results.
Before the modification, the following incorrect results were output.
CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );
INSERT INTO t1 VALUES(1,1);
INSERT INTO t1 VALUES(2,2);
CREATE TABLE t2 ( c1 INTEGER, c2 INTEGER );
INSERT INTO t2 VALUES(1,1);
COMMIT;
gSQL> \EXPLAIN PLAN
SELECT t1.c1, t2.c1
FROM t1 LEFT OUTER JOIN t2
ON t1.c1 = t2.c1
WHERE DECODE( t2.c2, NULL, 'A', 'B' ) = 'A'
;
no rows selected.
>>> start print plan
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | HASH JOIN (INNER JOIN) |
| 3 | TABLE ACCESS ("T1") |
| 4 | HASH JOIN INSTANT |
| 5 | TABLE ACCESS ("T2") |
========================================================================
1 - TARGET : T1.C1, T2.C1
2 - JOINED COLUMN : T1.C1, T2.C1
3 - READ COLUMN : T1.C1
4 - HASH KEY : T2.C1
READ KEY COLUMN : T2.C1
HASH FILTER : T2.C1 = T1.C1
5 - READ COLUMN : T2.C1, T2.C2
LOGICAL FILTER : DECODE(T2.C2,NULL,'A','B') = 'A'
<<< end print planAfter the modification, the correct plan and results are as follows.
\EXPLAIN PLAN
SELECT t1.c1, t2.c1
FROM t1 LEFT OUTER JOIN t2
ON t1.c1 = t2.c1
WHERE DECODE( t2.c2, NULL, 'A', 'B' ) = 'A'
;
C1 C1
-- ----
2 null
1 row selected.
>>> start print plan
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | HASH JOIN (LEFT OUTER JOIN) |
| 3 | TABLE ACCESS ("T1") |
| 4 | HASH JOIN INSTANT |
| 5 | TABLE ACCESS ("T2") |
========================================================================
1 - TARGET : T1.C1, T2.C1
2 - JOINED COLUMN : T2.C2, T1.C1, T2.C1
WHERE FILTER : DECODE(T2.C2,NULL,'A','B') = 'A'
3 - READ COLUMN : T1.C1
4 - HASH KEY : T2.C1
RECORD COLUMN : T2.C2
READ KEY COLUMN : T2.C1, T2.C2
HASH FILTER : T2.C1 = T1.C1
5 - READ COLUMN : T2.C1, T2.C2
<<< end print planWorkaround
Use the NO_QUERY_TRANSFORMATION hint as follows.
\EXPLAIN PLAN
SELECT /*+ NO_QUERY_TRANSFORMATION */
t1.c1, t2.c1
FROM t1 LEFT OUTER JOIN t2
ON t1.c1 = t2.c1
WHERE DECODE( t2.c2, NULL, 'A', 'B' ) = 'A'
;
C1 C1
-- ----
2 null
1 row selected.
>>> start print plan
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | HASH JOIN (LEFT OUTER JOIN) |
| 3 | TABLE ACCESS ("T1") |
| 4 | HASH JOIN INSTANT |
| 5 | TABLE ACCESS ("T2") |
========================================================================
1 - TARGET : T1.C1, T2.C1
2 - JOINED COLUMN : T2.C2, T1.C1, T2.C1
WHERE FILTER : DECODE(T2.C2,NULL,'A','B') = 'A'
3 - READ COLUMN : T1.C1
4 - HASH KEY : T2.C1
RECORD COLUMN : T2.C2
READ KEY COLUMN : T2.C1, T2.C2
HASH FILTER : T2.C1 = T1.C1
5 - READ COLUMN : T2.C1, T2.C2
<<< end print planISSUE-6537 When performing a cast operation between string types, such as CAST('ABCDE' AS CHAR(3)), an error occurs if the source value exceeds the dest precision.
Description
When performing a cast operation between string types, such as CAST('ABCDE' AS CHAR(3)), an error occurs if the source value exceeds the dest precision.
In this case, the cast operation is performed by truncating the source value to match the precision of the target string type.
Symptom
Before the modification, the following error occurred.
DROP TABLE t1;
CREATE TABLE t1 ( c1 CHAR( 5 ) );
INSERT INTO t1 VALUES ( 'ABCDE' );
COMMIT;
gSQL> SELECT CAST( c1 AS CHAR(3) ) FROM t1;
ERR-22001(12002): byte length of data greater than column length :
SELECT CAST( c1 AS CHAR(3) ) FROM t1
*
ERROR at line 1:After the modification, the cast operation is performed by truncating the source value to match the precision of the target string type.
gSQL> SELECT CAST( c1 AS CHAR(3) ) FROM t1; CAST( C1 AS CHAR(3) ) --------------------- ABC 1 row selected.
Workaround
Specify the precision of the target string type to accommodate the source value.
ISSUE-6536 The DML jitter issue caused by bulk logging has been eliminated.
Description
The issue of DML jitter caused by bulk logging during online index rebuilds has been eliminated.
Symptom
Bulk logging can slow down the log flusher, which in turn can increase the duration for which online index rebuilds hold locks, potentially causing delays in DML operations.
INDEX_LOGGING_THROTTLING property has been newly added. It prevents bulk logging from occurring in a short period during index rebuilds.
Workaround
The patch is required.
ISSUE-6543 If multiple members simultaneously raise the startup phase to global open, the server may terminate abnormally.
Description
The issue of the server's abnormal termination when multiple members simultaneously raise the startup phase to global open has been resolved.
Symptom
When multiple members simultaneously raise the startup phase to global open, the server may hang or terminate abnormally.
Workaround
Only one member must raise the startup phase to global open at a time.
ISSUE-6511 The SQLSTATE for errors caused by disconnection between cluster members has been changed.
Description
The SQLSTATE for errors caused by disconnection between cluster members has been changed.
Symptom
The SQLSTATE for DML errors caused by disconnection between cluster members has been changed.
Error code | Existing SQLSTATE | Changed SQLSTATE | Message |
|---|---|---|---|
16357 | 42000 | 42R01 | must be accessible to at least one member of group '%s' |
16358 | 42000 | 42R01 | accessible member does not exist |
The SQLSTATE for DDL errors caused by disconnection between cluster members has been changed.
Error code | Existing SQLSTATE | Changed SQLSTATE | Message |
|---|---|---|---|
16360 | 42000 | 42R02 | cloned table "%s"."%s" must be accessible to at least one member |
16361 | 42000 | 42R02 | sharded table "%s"."%s" must be accessible to at least one member of group '%s' |
16412 | 42000 | 42R02 | all of shards in a table '%s' must be online. |
16482 | 42000 | 42R02 | database is not accessible; '%s' has detached from the cluster |
16545 | 42000 | 42R02 | cloned table "%s"."%s" must have at least one online replica |
16546 | 42000 | 42R02 | sharded table "%s"."%s" must have at least one online replica of group '%s' |
Workaround
The patch is required.
22c.1.4 Patch Notes
ISSUE-5544 If a transaction fails due to a disconnection with the master during replication in a cluster environment using Cyclone, the rollback logic may hang.
Description
This issue occurs only in a cluster replication environment. If a previously processed transaction needs to be rolled back because the slave failed to process the transaction due to the master being terminated during replication with Cyclone, it can cause Cyclone to hang.
To address this, the rollback logic on the slave has been removed and replaced with a method to store all data before executing the transaction. This modification resolves the hanging issue.
Symptom
In some cases, the slave trace log may continuously record the messages as follows, and the system may hang as a result.
[RECEIVER(#2)] [INFO]WAIT_WRITE_RESTART_INFO_FOR_SKIP(AnalyzeState = 1)SCN(705:10166:18)
Workaround
The patch is required.
ISSUE-6381 The conversion rule from the numeric type to the character type is different from other DBMS.
Description
If converting the numeric type to the varchar type, it is converted to an exponential type or to a real number type according to the varchar precision. In this case, it is converted by rounding off so that it can be expressed appropriately for the space used as much as possible.
Therefore, the precision of the valid number representation for the original number decreases.
The result of the numeric type → CHAR type conversion and the numeric type → VARCHAR type conversion are different.
NUMBER / NUMERIC
Conversion to CHAR: It is converted only to a real number type. (If it can not be expressed within the precision, then an error occurs.)
Conversion to VARCHAR: It is converted to an exponential type or to a real number type according to precision by rounding off.
NATIVE_REAL / NATIVE_DOUBLE
CHAR: It is converted to an exponential type so that all of the valid numbers are expressed. (If it is truncated, then an error occurs.)
VARCHAR: It is converted to an exponential type according to precision by rounding off.
Troubleshooting
If all valid numbers of the numeric type can be expressed, then modify it as follows.
NUMBER/ NUMERIC: Convert it to an exponential type or to a real number type according to the precision of the character type.
NATIVE_REAL/ NATIVE_DOUBLE: Convert it to an exponential type.
The result of the numeric type → CHAR type conversion and the numeric type → VARCHAR type conversion are same.
Symptom
It is converted by rounding off so that it can be expressed appropriately for the space used as much as possible, so the precision of the valid number representation for the original number decreases.
gSQL> create table t1 ( c1 varchar(2) ); Table created. gSQL> insert into t1 values ( 2.4 ); 1 row created. gSQL> insert into t1 values ( 2.5 ) ; 1 row created. gSQL> commit; Commit complete. gSQL> select * from t1; C1 -- 2 3 2 rows selected.
Workaround
Specify the appropriate character type precision to express all valid numbers for the original number.
gSQL> create table t1 ( c1 varchar(10) ); Table created. gSQL> insert into t1 values ( 2.4 ); 1 row created. gSQL> insert into t1 values ( 2.5 ) ; 1 row created. gSQL> commit; Commit complete. gSQL> select * from t1; C1 --- 2.4 2.5 2 rows selected.
ISSUE-6255 [CDC] PWD was exposed in the connection string recorded in the trace log, so it is replaced with '*' when it is recorded.
Description
PWD was exposed in the connection string recorded in the trace log of cyclone, cymon and cyfile, and this error has been fixed by replacing it with '*' when it is recorded.
Symptom
PWD was exposed in the connection string of cyclone, cymon and cyfile when it was recorded in the trace log.
connection string [PROTOCOL=DA;DSN=goldilocks_jinsil;PORT=11100;UID=test;PWD=test]
Workaround
The patch is required.
ISSUE-6030 An error occurred in cyclone when rebalancing members in the Cluster environments, and this error has been fixed.
Description
When rebalancing cluster members while cyclone was in operation in a cluster environment, cyclone could not process it, and this error has been fixed.
Symptom
The followings were recorded in cyclone operated in the cluster member where rebalancing was executed, and no further operation was executed.
[2023-12-08 16:33:58.782398 THREAD(3292,140620625983232)] Ready to Rebalance-Tx commit. (Waiting for slave response)
Workaround
The patch is required.
ISSUE-6116 The performance of long procedure's direct execution has been improved.
Description
The direct execution performance of the procedure which consists of massive PL stmt and expression has been improved.
Symptom
proc1 is the procedure which consists of 2000 BEGIN .. END blocks, 12000 PL stmt, and 230,000 expressions in the following example.
If proc1() was called as follows, it used to take 150 ms or more.
gSQL> call proc1(200,439); Procedure Call complete. Elapsed time: 157.09300 ms
The performance has been improved as follows by widely improving the plan size of procedure execution and the optimization process.
gSQL> call proc1(200,439); Procedure Call complete. Elapsed time: 12.35000 ms
Workaround
Call the procedure with a prepare-execution.
--# prepare gSQL> \prepare sql call proc1(200,439); SQL prepared. --# 1st execution --# data optimize - execute gSQL> \exec Procedure Call complete. Elapsed time: 158.82600 ms --# 2nd execution --# execute gSQL> \exec Procedure Call complete. Elapsed time: 2.79600 ms
ISSUE-6231 An error occurs when entering GLOBAL OPEN with an invalid IP.
Description
It failed when trying to go up to GLOBAL OPEN with an invalid remote IP, and this error has been fixed.
Symptom
When trying to go up to GLOBAL OPEN with an invalid remote IP, it should have gone up to GLOBAL OPEN excluding the failed node, but it fails as follows.
gSQL> alter system open global database; ERR-HY000(11047): MEMBER(G1N2): invalid network address : invalid address()
Workaround
Alter the IP of the failed node to the valid IP by using ALTER CLUSTER LOCATION statement.
gSQL> alter cluster location g1n2 host '127.0.0.1' port 12150; altered.
ISSUE-6358 Cache coherency error in weak memory ordering device
Description
The server was abnormally terminated due to a discrepancy between the sequence of memory access and the program order, and this error has been fixed.
Symptom
The server may experience abnormal behavior or termination because outdated data in the CPU cache is used instead of the most recent data.
Workaround
The patch is required.
22c.1.3 Patch Notes
ISSUE-5799 An error did not occur even though the default expression was not valid when performing CREATE TABLE/ ALTER TABLE.
Description
If defining the default clause when performing CREATE TABLE/ ALTER TABLE, it checks whether the default expression is valid.
Symptom
An error did not occur even though the default expression was not valid.
CREATE TABLE t1 ( c1 INTEGER DEFAULT 1 / 0 ); Table created.
It has been fixed now, so the error occurs as follows.
CREATE TABLE t1 ( c1 INTEGER DEFAULT 1 / 0 ); ERR-22012(12122): divisor is equal to zero
Workaround
The patch is required.
ISSUE-5828 The join query including ROWNUM should not be sent to the remote node, but sometimes it is sent.
Description
The join query including ROWNUM should not be sent to the remote node. If each node stores data in a different order then the result may be wrong even though it is a clone table.
Symptom
\explain plan
SELECT COUNT(*)
FROM ( SELECT c1
FROM t_clone
WHERE ROWNUM <= 1000
) X
, t_shard Y
WHERE X.c1 = Y.c1
;
COUNT(*)
--------
1005
1 row selected.
>>> start print plan
< Execution Plan >
============================================================================
|IDX| NODE DESCRIPTION |
----------------------------------------------------------------------------
| 0| SELECT STATEMENT |
| 1| QUERY BLOCK ("$QB_IDX_2") |
| 2| SINGLE CLUSTER |
| 3| CLUSTER PUSHER ("_$NI_6") |
| 4| INLINE_VIEW ("X") |
| 5| QUERY BLOCK ("$QB_IDX_6") |
| 6| COUNT |
| 7| TABLE ACCESS ("T_CLONE") |
| 8| AGGREGATION BY HASH |
| 9| NESTED JOIN (INNER JOIN) |
| 10| PUSHER TABLE ACCESS ("_$NI_6") |
| 11| INDEX ACCESS ("T_SHARD" AS Y, "T_SHARD_PRIMARY_KEY_INDEX")|
============================================================================
1 - TARGET : COUNT(*)
2 - SQL : SELECT /*+ KEEP_JOINED_TABLE USE_HASH_IN( _A1, 7801 ) NO_MERGE( _A2 ) INDEX( _A1, "PUBLIC"."T_SHARD_PRIMARY_KEY_INDEX" ) */ COUNT(*) FROM ( ( SELECT /*+ FULL( _A3 ) */ "_A3"."C1" FROM "PUBLIC"."T_CLONE"@LOCAL AS "_A3" WHERE ROWNUM <= :_V0 ) AS "_A2"("C1") INNER JOIN "PUBLIC"."T_SHARD"@LOCAL AS "_A1" ON "_A1"."C1" = "_A2"."C1") ALIAS "_A4"
TARGET DOMAIN : G1(G1N1) 1 rows, G2(G2N1) 1 rows, G3(G3N1) 1 rows
RE-AGGREGATION
AGGREGATION : SUM( COUNT(*) )
4 - TARGET : COUNT(*)
5 - AGGREGATION : COUNT(*)
6 - JOINED COLUMN : NOTHING
7 - COLUMN : _A3.C1 AS C1
8 - TARGET : _A3.C1
9 - STOP KEY FILTER : ROWNUM <= :_V0
10 - CLONED
READ COLUMN : _A3.C1
11 - HASH KEY : _A1.C1
READ KEY COLUMN : _A1.C1
HASH FILTER : _A1.C1 = _A2.C1
FETCH ONE ROW
12 - HASH SHARD ( # 3 )
READ INDEX COLUMN : _A1.C1
<<< end print planThe join query including ROWNUM should not be sent to the remote node, but ROWNUM filter is sent to the remote query node in the query above.
Workaround
Use /*+ LOCAL_JOIN(Y) */ hint.
ISSUE-5810 [CYCLONE] If a record does not exists in the table containing a long varchar column, then it fails to SYNC.
Description
The error occurs because the null check for a long varchar column is incorrectly performed while checking the existence of a record in the table of the master during SYNC. It determines that there is a record even though a record does not exist. Then, it tries to INSERT the null data to the slave, and it outputs the error message "cannot insert NULL into" and it fails to SYNC.
Symptom
If a record does not exist in the table containing a long varchar column while transferring the data of the master to the slave by using SYNC feature during the replication using CYCLONE, then "cannot insert NULL into" error occurs, and it fails to SYNC.
Workaround
The patch is required.
ISSUE-5665 If the join including three or more tables is performed by using the instant nested loop join method, then the result may be wrong.
Description
If the join including three or more tables is performed by using the instant nested loop join method, then the result may be wrong.
Symptom
--# result : 27
\EXPLAIN PLAN
SELECT COUNT(t2.col1)
FROM t2, t3, t4, t1
WHERE t2.col1 + t1.col1 = t4.col1
AND t3.col1 + t1.col1 = t4.col1;
COUNT(T2.COL1)
--------------
0
1 row selected.
>>> start print plan
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | AGGREGATION BY HASH |
| 3 | NESTED JOIN (INNER JOIN) |
| 4 | TABLE ACCESS ("T1") |
| 5 | SORT JOIN INSTANT |
| 6 | NESTED JOIN (INNER JOIN) |
| 7 | NESTED JOIN (INNER JOIN) |
| 8 | INDEX ACCESS ("T2", "T2_COL1") |
| 9 | INDEX ACCESS ("T3", "T3_COL1") |
| 10 | INDEX ACCESS ("T4", "T4_COL1") |
========================================================================
1 - TARGET : COUNT( T2.COL1 )
2 - AGGREGATION : COUNT( T2.COL1 )
3 - JOINED COLUMN : T2.COL1
4 - READ COLUMN : T1.COL1
5 - SORT KEY : "T4.COL1 ASC NULLS LAST"
RECORD COLUMN : T2.COL1
READ KEY COLUMN : T4.COL1
READ RECORD COLUMN : T2.COL1
MIN RANGE : T4.COL1 = T2.COL1 + {T1.COL1} AND T4.COL1 = T3.COL1 + {T1.COL1}
MAX RANGE : T4.COL1 = T2.COL1 + {T1.COL1} AND T4.COL1 = T3.COL1 + {T1.COL1}
6 - JOINED COLUMN : T4.COL1, T2.COL1, T3.COL1
7 - JOINED COLUMN : T2.COL1, T3.COL1
8 - READ INDEX COLUMN : T2.COL1
9 - READ INDEX COLUMN : T3.COL1
10 - READ INDEX COLUMN : T4.COL1
<<< end print planThe result from the query above should be '27', but actually '0' is output.
The WHERE clause condition 'T4.COL1 = T2.COL1 + T1.COL1 AND T4.COL1 = T3.COL1 + T1.COL1' can not be used as an index range condition, but actually it is used.
However, if the query is modified, then the correct result is output as follows.
\EXPLAIN PLAN
SELECT COUNT(t2.col1)
FROM t2, t3, t4, t1
WHERE t2.col1 + t1.col1 = t4.col1
AND t3.col1 + t1.col1 = t4.col1;
COUNT(T2.COL1)
--------------
27
1 row selected.
>>> start print plan
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | AGGREGATION BY HASH |
| 3 | NESTED JOIN (INNER JOIN) |
| 4 | NESTED JOIN (INNER JOIN) |
| 5 | NESTED JOIN (INNER JOIN) |
| 6 | INDEX ACCESS ("T2", "T2_COL1") |
| 7 | INDEX ACCESS ("T3", "T3_COL1") |
| 8 | INDEX ACCESS ("T4", "T4_COL1") |
| 9 | FLAT JOIN INSTANT |
| 10 | TABLE ACCESS ("T1") |
========================================================================
1 - TARGET : COUNT( T2.COL1 )
2 - AGGREGATION : COUNT( T2.COL1 )
3 - JOINED COLUMN : T3.COL1, T1.COL1, T4.COL1, T2.COL1
ON FILTER : ( T3.COL1 + T1.COL1 ) = T4.COL1 AND ( T2.COL1 + T1.COL1 ) = T4.COL1
4 - JOINED COLUMN : T3.COL1, T4.COL1, T2.COL1
5 - JOINED COLUMN : T3.COL1, T2.COL1
6 - READ INDEX COLUMN : T2.COL1
7 - READ INDEX COLUMN : T3.COL1
8 - READ INDEX COLUMN : T4.COL1
9 - RECORD COLUMN : T1.COL1
READ COLUMN : T1.COL1
10 - READ COLUMN : T1.COL1
<<< end print planWorkaround
Use a hint other than USE_INL(t1). For example, use USE_NL(t1), USE_HASH(t1) or USE_MERGE(t1).
ISSUE-5710 If a view exists inside a view and group by exists in the innermost view, then the complex view merging occurs in succession, causing an error.
Description
If a view exists inside a view and group by exists in the innermost view, then the complex view merging occurs in succession, causing an error. In this case, the error occurs in an aggregation expression of SELECT list.
Even though the conditions above are satisfied, if an aggregation does not exist in SELECT list, then an error does not occur.
Symptom
\EXPLAIN PLAN
SELECT sum(case_sum )
FROM (
SELECT
v1.col1, v1.col2, ( case when v1.sum > 0 then 2
else 1
end
)as case_sum
FROM ( SELECT col1, col2, sum(col3) as sum
FROM t1
WHERE col3 > 0
GROUP BY col1, col2
) v1
) v2
, t2
WHERE v2.col1 = t2.col1;
ERR-42000(12119): comparison is not applicable: ROWID and NUMBER :If v1 is merged first, and then v2 is merged, then it can not find v1.sum in 'case when then' statement.
Workaround
If either one of two views fails to merge, then an error does not occur. Therefore, use /*+ NO_MERGE( v1) */ hint or /*+ NO_MERGE(v2)*/ hint.
ISSUE-5667 When a subquery refers to the outer query, if the subquery refers to both a materialized view and an ordinary table, then the server is abnormally terminated.
Description
If all of the following conditions are satisfied, then the server is abnormally terminated.
When tables are listed in <from clause>, the materialized view specified by <with clause> is listed ahead, followed by the ordinary table.
A subquery exists and the subquery refers to both a materialized view and an ordinary table.
Symptom
DROP TABLE IF EXISTS r;
DROP TABLE IF EXISTS s;
DROP TABLE IF EXISTS t;
CREATE TABLE r ( c1 INTEGER, c2 INTEGER );
INSERT INTO r VALUES(1,1);
CREATE TABLE s ( c1 INTEGER, c2 INTEGER, c3 INTEGER );
INSERT INTO s VALUES(1,1,1);
CREATE TABLE t ( c1 INTEGER, c2 INTEGER );
INSERT INTO t VALUES(1,1);
COMMIT;
--# result : 1 row
\EXPLAIN PLAN
WITH w AS ( SELECT /*+ MATERIALIZE */
c1
FROM r
WHERE c1 > 0 )
SELECT *
FROM w, s
WHERE s.c1 IN ( SELECT t.c1
FROM t
WHERE s.c1 = t.c1
AND w.c1 = t.c2
) ;In the query above, w and s are listed in an order of w,s in FROM clause, and the subquery refers to both s.c1 and w.c1. In this case, the server is abnormally terminated.
Workaround
List the materialized view last in FROM clause.
ISSUE-5634 V$LICENSE has been added.
Description
The view has been added to view the license information of the currently running server.
Symptom
N/A
Workaround
The patch is required.
ISSUE-5442 [CYCLONE] If replicating the column with a unique attribute, then the transaction may fail.
Description
If a column has a unique attribute in the table to replicate, then it is normally processed in an source database, but unique violation or NO_ROWS error may occur in a remote database. Therefore, to solve this problem, the feature to control concurrency of the column has been added when replicating the column with the unique attribute.
Symptom
[APPLIER #1(SID:100)-INSERT] ERR-23000(16057) : unique constraint (PUBLIC.TEST1) violated [APPLIER #2(SID:101)-UPDATE] Conflict. [APPLIER #3(SID:102)-DELETE] Conflict.
If a column has a unique attribute in the replicating table, then logs are frequently recorded on the trace log of the slave as given above.
Workaround
The patch is required.
ISSUE-5568 [CYCLONE] If replicating recovery spans two redo log files, then the starting point of the recovery is incorrectly set.
Description
When restarting after terminating the replication, cyclone finds the starting point of the recovery by using the information applied to the existing applier, then restarts the replication.
When recovering, it finds the optimal starting point by comparing the information between multiple appliers. If the redo log file information between appliers is different, then it discards the information of the old redo log file, and determines the starting point of the recovery by using only the new redo log file information, and this error has been fixed.
Symptom
When restarting after terminating the replication, a transaction may not be replicated.
Workaround
The patch is required.
ISSUE-5511 [CYCLONE] The internal transaction ID is set incorrectly in the distributor.
Description
It is guaranteed that the transaction IDs are not duplicated among simultaneously performed transactions in an original database. However, the completed transaction ID can be reused later.
When transferring the transaction to the slave after extracting the original transaction for the replication, the execution time of the transaction ID may be different from the original due to the parallel apply. In this case, the slave changes the separate transaction ID into the internally distinguishable ID to prevent identity duplication by reusing the transaction ID.
This internal transaction ID is allocated by the distributor, but it uses the original value instead of the internal value while analyzing specific logs, so the problem occurs, which a single transaction has two transaction IDs.
Two transaction ID values used as a delimiter value of concurrency control in distributor are allocated to a single transaction, so self dead-lock may occur in a specific situation.
Symptom
CREATE TABLE T1 ( C1 INTEGER PRIMARY KEY, C2 LONG VARCHAR );
INSERT INTO T1 VALUES( 1, 'AAA' );
DELETE FROM T1 WHERE C1=1;
INSERT INTO T1 VALUES( 1,'AAAAAAA .......' ); 1 INSERT the data over 8K
COMMIT;As above, if performing the query processing the same key value and INSERT which inserts the record over 8K in a single transaction, then the dead-lock occurs.
Workaround
The patch is required.
ISSUE-5499 If the argument of the window function is a scalar subquery expression, then the value is not evaluated.
Description
If the scalar subquery expression which can become a constant is used as the argument of the window function in the cluster environment, then the expression is not evaluated when executing the query, so the result is NULL.
Symptom
--# BUGBUG --# result : 1 SELECT SUM( ( SELECT 1 FROM dual ) ) OVER() AS C_NAME FROM dual@G2; C_NAME ------ null
In the cluster environment, all expressions which can become constants are evaluated on the driver node and the result value is transferred to the generated query.
When using the subquery expression as an argument of the window function, then it did not determine whether to configure the constant, so it did not become a constant. If it is required to transfer the result value of the subquery expression through the generated query, then a result error occurs.
If the query is performed only on the local node in the standalone or the cluster environment, then the expression in the window function is evaluated even when it is not become a constant, so an error does not occur.
Workaround
The patch is required.
ISSUE-5505 If the access method for leftmost table in the join is the unique index access, and only part of key columns in the group by belong to the unique index, then the result may be wrong.
Description
If the access method for leftmost table in the join is the unique index access, and only part of key columns in the group by belong to the unique index, then the result may be wrong.
Symptom
DROP TABLE IF EXISTS r;
DROP TABLE IF EXISTS s;
DROP TABLE IF EXISTS t;
CREATE TABLE r( c1 INTEGER, c2 INTEGER, c3 INTEGER, c4 INTEGER, c5 INTEGER );
INSERT INTO r VALUES(1, 1, 1, 1, 1);
INSERT INTO r VALUES(1, 2, 1, 1, 1);
INSERT INTO r VALUES(1, 2, 1, 1, 1);
INSERT INTO r VALUES(2, 1, 2, 1, 1);
INSERT INTO r VALUES(2, 1, 2, 2, 1);
INSERT INTO r VALUES(3, 1, 2, 2, 1);
INSERT INTO r VALUES(3, 2, 3, 2, 1);
INSERT INTO r VALUES(4, 1, 3, 3, 1);
INSERT INTO r VALUES(5, 1, 3, 3, 1);
INSERT INTO r VALUES(1, 3, 2, 1, 1);
INSERT INTO r VALUES(1, 1, 1, 1, 1);
COMMIT;
CREATE TABLE s( c1 INTEGER PRIMARY KEY, c2 INTEGER, c3 INTEGER, c4 INTEGER, c5 INTEGER );
INSERT INTO s VALUES(1, 1, 1, 1, 1);
INSERT INTO s VALUES(2, 3, 1, 1, 1);
INSERT INTO s VALUES(3, 3, 1, 1, 1);
INSERT INTO s VALUES(4, 2, 2, 1, 1);
INSERT INTO s VALUES(5, 2, 2, 2, 1);
INSERT INTO s VALUES(6, 1, 2, 2, 1);
INSERT INTO s VALUES(7, 1, 3, 2, 1);
INSERT INTO s VALUES(8, 3, 3, 3, 1);
INSERT INTO s VALUES(9, 3, 3, 3, 1);
COMMIT;
CREATE TABLE t( c1 INTEGER, c2 INTEGER, c3 INTEGER, c4 INTEGER, c5 INTEGER );
INSERT INTO t VALUES(1, 1, 1, 1, 1);
INSERT INTO t VALUES(1, 3, 3, 1, 1);
INSERT INTO t VALUES(1, 3, 3, 1, 1);
INSERT INTO t VALUES(1, 2, 2, 1, 1);
INSERT INTO t VALUES(1, 2, 2, 1, 1);
INSERT INTO t VALUES(2, 3, 1, 1, 1);
INSERT INTO t VALUES(3, 3, 1, 1, 1);
INSERT INTO t VALUES(4, 2, 2, 1, 1);
INSERT INTO t VALUES(5, 2, 2, 2, 1);
COMMIT;
--# result : 6 rows
\EXPLAIN PLAN
SELECT s.c1, s.c2, t.c3
FROM s, r, t
WHERE s.c1 > 0 AND s.c1 < 5
AND s.c1 = r.c1
AND r.c1 = t.c1
GROUP BY s.c1, s.c2, t.c3;
C1 C2 C3
-- -- --
1 1 2
1 1 3
1 1 1
1 1 2
1 1 3
1 1 1
1 1 2
...
18 rows selected
< Execution Plan >
========================================================================
| IDX | NODE DESCRIPTION |
------------------------------------------------------------------------
| 0 | SELECT STATEMENT |
| 1 | QUERY BLOCK ("$QB_IDX_2") |
| 2 | GROUP |
| 3 | HASH JOIN (INNER JOIN) |
| 4 | MERGE JOIN (INNER JOIN) |
| 5 | INDEX ACCESS ("S", "S_PRIMARY_KEY_INDEX") |
| 6 | INDEX ACCESS ("R", "R_IDX") |
| 7 | HASH JOIN INSTANT |
| 8 | TABLE ACCESS ("T") |
========================================================================The result from the query above should be 6 rows, but actually 18 rows are output. The leftmost table s uses 'S_PRIMARY_KEY_INDEX', so the join result is sorted for s.c1. In the plan above, group by performs the grouping by using the sorted result of the join. However, the sorted records are not sorted for all group key columns, so it may lead to the wrong result.
Workaround
Use /*+ USE_GROUP_HASH */ hint.
ISSUE-5500 GoldilocksPreparedStatement.setFixedCHAR(), a JDBC non standard function, has been added.
Description
GoldilocksPreparedStatement.setFixedCHAR(), a JDBC non standard function, has been added.
Symptom
If binding a CHAR column to the WHERE clause in a SELECT statement by using PreparedStatement.setSrting(), then the result is not found.
create table x (c char(4));
insert into x (c) values ('a'); -- inserts 'a '
PreparedStatement stmt =
conn.prepareStatement("select * from x where c = ?");
stmt.setString(1, "a"); // This won't return any records
stmt.executeQuery();Workaround
Change the CHAR column to a VARCHAR column.
ISSUE-5482 If the logs are insufficient during the incomplete recovery, then the recovery fails.
Description
The recovery fails during the incomplete recovery even though it could be completed, and this error has been fixed.
Symptom
If performing the incomplete recovery by using the backup redo logs because the redo log is lost, and the backup redo log is earlier than the archive log, then it can not find the log later than the archive log, so the error occurs.
gSQL> ALTER DATABASE RECOVER UNTIL TIME '2023-04-05 19:05:01.559752'; ERR-HY000(14068): logfile does not exist - '/goldilocks/goldilocks_data/archive_log/archive_4.log'
Workaround
If the redo log later than the archive log does not exist, then perform an interactive incomplete recovery which performs the recovery by using undefected log only as follows.
gSQL> ALTER DATABASE BEGIN INCOMPLETE RECOVERY; ERR-01000(14104): Warning: suggestion '/goldilocks/archive_log/archive_0.log' ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 139992) Database altered. gSQL> ALTER DATABASE RECOVER AUTOMATICALLY; ERR-01000(14104): Warning: suggestion '/goldilocks/archive_log/archive_4.log' ERR-01000(14103): Warning: media recovery needs a logfile including log (Lsn 144143) Database altered. gSQL> ALTER DATABASE END INCOMPLETE RECOVERY; Database altered.
ISSUE-5445 Even if LOGFILE GROUP size is set sufficiently it fails to add LOGFILE GROUP when performing ADD LOGFILE GROUP.
Description
Even if LOGFILE GROUP size is set sufficiently it fails to add LOGFILE GROUP with a error message saying the logfile is smaller than the minimum size. It is because the minimum size of the logfile should be calculated based on the number of log buffers and pending log buffers which were revised during the startup, but actually it is calculated based on the property value when performing ADD LOGFILE GROUP.
Symptom
If attempting to add a logfile group after starting up to mount phase with PROPERTY set as follows, then it fails.
LOG_BUFFER_SIZE=1G PENDING_LOG_BUFFER_COUNT=32
gSQL> STARTUP MOUNT
Startup success
gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ('redo_4_0.log') SIZE 512M;
ERR-42000(16198): size of log file is smaller than minimum size of log file(1107296256 bytes).Workaround
Create a logfile group by revising LOG_BUFFER_SIZE property and PENDING_LOG_BUFFER_COUNT property.
ISSUE-5424 If executing SELECT statement of an embedded SQL without INTO clause, then an error occurs even when the data exists, and this error has been fixed.
Description
If repeatedly executing SELECT statement of an embedded SQL without INTO clause, then an error occurs, and this error has been fixed.
Symptom
EXEC SQL SELECT 1 FROM DUAL; EXEC SQL SELECT 1 FROM DUAL;
If repeatedly executing the same SELECT statement as given above, then the following error occurs.
Invalid cursor state : A cursor was open on the StatementHandle.
Workaround
Add INTO clause to the SELECT statement, then execute it.
ISSUE-5411 It throws NullPointerException when using getBinaryStream method of ResultSet class in JDBC, and this error has been fixed.
Description
It throws NullPoinerException when using getBinaryStream method of ResultSet class to get null data of long varbinary type, and this error has been fixed.
Symptom
C_BLOB of LONG VARBINARY type in table TEST_LOB has NULL data.
CREATE TABLE PUBLIC.TEST_LOB
(
ID NUMBER( 10, 0 ),
C_BLOB LONG VARBINARY
);
INSERT INTO TEST_LOB VALUES(1,UNHEX(HEX('XXXXXXXX')));
INSERT INTO TEST_LOB VALUES(2,null);
COMMIT;The following is a code which uses getBinaryStream method to get the data of LONG VARBINARY type.
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID, C_BLOB FROM TEST_LOB");
while (rs.next()) {
try{
InputStream is = rs.getBinaryStream("c_blob");
byte[] bytes = new byte[0];
bytes = new byte[is.available()];
is.read(bytes);
} catch( Exception e){
System.out.println(e);
}
}When executing the code above, it throws java.lang.NullPointerException.
Workaround
The patch is required.
ISSUE-5398 The data is lost when gloader uploads the data in the text mode, and this error has been fixed.
Description
gloader uses the field delimiter and the line delimiter which start with the same character when uploading the data in the text mode. If the data includes the first character of these delimiter, then the data is truncated and uploaded in an invalid form, and this error has been fixed.
Symptom
The following is an example of a data file.
data 1^^^Cc__Cc^data 2^Rr__Rr
The following is an example of a control file.
TABLE TEST FIELD TERMINATED BY '^Cc__Cc^' LINE TERMINATED BY '^Rr__Rr\n'
If uploading the data by using the control file and the data file above, then the data is truncated.
gloader test test -i --control test.ctl --data test.dat --array 1 --no-copyright COMPLETED IN IMPORTING TABLE: PUBLIC.TEST, TOTAL 3 RECORDS, SUCCEEDED 3 RECORDS gSQL> SELECT * FROM TEST; C1 C2 ------- ------------- data 1^ null ^ null null data 2^Rr__Rr
Workaround
Use the the field delimiter and the line delimiter which start with the different character each other.
ISSUE-5407 Cluster peer which is waiting for the lock to be release can not recognize that driver node is killed.
Description
If the driver member is abnormally terminated while waiting for the lock to be released on the remote, then the remotely created session remains alive.
Symptom
The following is an example of an environment that the cluster group G1 has G1N1, G1N2 as members, and the table T1 is created.
The record of table T1 is updated on G1N1.
gSQL> UPDATE T1 SET A = A + 1 WHERE A = 1; 1 row updated.
If the same record is updated on G1N2, then it will wait.
gSQL> UPDATE T1 SET A = 10 WHERE A = 1;
When checking the session on G1N1, then it is seen that the cluster session is waiting for the update sent from G1N2.
gSQL> SELECT SESSION_STATUS FROM V$SESSION@G1N1
WHERE PROGRAM_NAME = 'cluster peer';
SESSION_STATUS
--------------
CONNECTEDEven when gsql waiting for the update sent from G1N2 is killed, the session still remains alive on G1N1 as follows.
gSQL> SELECT SESSION_STATUS FROM V$SESSION@G1N1
WHERE PROGRAM_NAME = 'cluster peer';
SESSION_STATUS
--------------
CONNECTEDWorkaround
The patch is required.
22c.1.2 Patch Notes
ISSUE-5174 gpec supports declaring function arguments.
Description
gpec supports declaring function arguments. For more information, refer to Declaring Function Argument.
Symptom
N/A
Workaround
The patch is required.
ISSUE-5353 When connecting and disconnecting by using the window ODBC, then the number of program handles increase and this error has been fixed.
Description
When repeatedly connecting and disconnecting by using the window ODBC, then the number of entire program handles increase and this error has been fixed.
Symptom
When repeatedly connecting and disconnecting by using the window ODBC, then the number of entire program handles increase.
Workaround
The patch is required.
ISSUE-5344 When performing view projection pruning it deletes the column used in the upper block.
Description
If the following conditions are satisfied, the server may be abnormally terminated due to improperly performed view projection pruning.
group by or order by exists within a view.
expr to be deleted from the view's select list is an argument of another function expression.
Symptom
The following is a sample query which can cause an error.
SELECT sum_col1
FROM ( SELECT sum(col1) as sum_col1
, DECODE( sum(col1), NULL, 0 ) as decode_sum_col1
FROM t1
GROUP BY col2
) v1;decode_sum_col1 is not used in the upper block in v1, so it is pruned. Moreover, sum(col1) which is an argument of DECODE is also pruned. However, sum(col1) is already specified in select list and it is used in the view's upper block, so it should not be deleted.
Workaround
The patch is required.
ISSUE-5336 When using SUBQUERY in SELECT INTO statement of gpec, then it is not processed as a SELECT INTO statement.
Description
If gpec parses the SQL which has SUBQUERY after a SELECT INTO statement, then it is not processed as a SELECT INTO statement.
Symptom
The following is an example of using SUBQUERY after using the host variable array in a SELECT INTO statement.
EXEC SQL BEGIN DECLARE SECTION;
int no[10];
int count[10];
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT empno, B.COUNT
INTO :no, :count,
FROM emp, (SELECT count(*) as COUNT FROM emp);When performing the example above, then the following error occurs.
SQLCODE :-16289 SQLSTATE: 42000 ERROR MSG : into clause can have only one row
Workaround
Fetch the cursor instead of using the host variable array in a SELECT INTO statement.
ISSUE-5277 A hang occurs because buffers cannot be reused after deleting a disk tablespace.
Description
If the disk tablespace is deleted, then the ager thread moves the buffer cache which cached the the deleted tablesapace to the free list. In this case, it only displays that the dirty pages should be discarded. However, if the checkpoint does not occur, then the discarded pages can not be reused, so the hang occurs in the session looking for the free buffer, and this error has been fixed.
Symptom
If the buffers which cached pages of the deleted disk tablespace become the dirty page, then the session accessing the disk tablespace can not get the free buffer, so the hang occurs.
Workaround
Clear the dirty pages of the deleted disk tablespace by performing the checkpoint.
ISSUE-4945 Use SQLTables to check the existence of the table while creating a table to operate CYCLONE, CYMON.
Description
It has been modified to create the table after checking the existence of the table required to operate CYCLONE, CYMON by using SQLTables.
Symptom
N/A
Workaround
Validate the table existence when preparing, then use the result to determine whether the table exist.
ISSUE-5218 Using async commit leads to an excessive use of transaction by a single session.
Description
Async commit in the cluster environment can use a new transaction while the transaction is not terminated, so a single session may use two ore more transactions.
Symptom
An excessive use of transactions may cause the lack of transactions.
Workaround
The patch is required.
ISSUE-5029 Even when the master rejoins with reset all option while operating Cyclone in the cluster environment, but the existing replication information is not initialized.
Description
When restarting the previously operated master with reset all option while Cyclone is operating in the cluster environment, then it should not use the existing replication information, and the replication should be resumed from the current time.
Symptom
Even when restarting the master with reset all option, the recovery process uses the existing replication operating information.
Workaround
The patch is required.
22c.1.1 Patch Notes
ISSUE-5132 It supports DML execution for the single domain table without the global secondary index in the cluster environment.
Description
If the global secondary index is not configured when executing DML for the single domain table in cluster environment, then it may fail. DML query requires the global secondary index to guarantee the data consistency between servers. Therefore, if the data is stored in a single server, and it is not required to guarantee the data consistency between server, then it supports DML without the global secondary index.
It is recommended to configure the global secondary index to manage a single table in multiple servers in cluster environment.
Symptom
--# G4 group has G4N1 only. CREATE TABLE r ( c1 INTEGER ) CLONED AT CLUSTER GROUP g4 WITHOUT GLOBAL SECONDARY INDEX; --# result: success INSERT INTO r VALUES (1), (2), (3); --# Improvement --# result: success DELETE FROM r WHERE c1 = 2; ERR-42000(16519): global secondary index expected in cluster DML
Workaround
The patch is required.
ISSUE-5193 When executing a query including index backward scan in cluster environment, then the result is wrong.
Description
When executing the user query in cluster environment, if it is required to access the remote server and the user query includes index backward scan by ORDER BY statement or by a hint, then the query result may be in an order of index forward scan.
Symptom
If it is required to access the remote server when executing the user query in cluster environment, then the generated query is configured and transferred to the remote server. However, the remote server performs the index forward scan because the access path hint information is wrong when configuring the generated query including the index backward scan.
CREATE TABLE t1
(
c1 INTEGER
)
SHARDING BY RANGE ( c1 )
SHARD s1 VALUES LESS THAN ( 10 ) AT CLUSTER GROUP g1,
SHARD s2 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2;
INSERT INTO t1 VALUES ( 12 );
INSERT INTO t1 VALUES ( 11 );
INSERT INTO t1 VALUES ( NULL );
CREATE INDEX t1_idx1 ON t1( c1 ASC NULLS LAST );
--# BUGBUG
--# result: 3 rows
--# null
--# 12
--# 11
\EXPLAIN PLAN
SELECT c1 FROM t1@g2 ORDER BY c1 DESC NULLS FIRST;
C1
----
11
12
null
3 rows selected.Workaround
The patch is required.
ISSUE-5109 Cyclone malfunctions after shard rebalancing and split brain, and this error has been fixed.
Description
When recovering after shard rebalancing and split brain, Cyclone is terminated with "internal error occurred (Not Need Rebalance)" error.
Symptom
Even when cyclone determines rebalancing is not required, but it is rebalanced in a specific situation. This may happen in shard rebalancing and split brain situation.
Workaround
Restart Cyclone with --reset.
ISSUE-5162 Even when SQL_ATTR_CONNECTION_TIMEOUT is set in ODBC, it may wait longer than the settings, and this error has been fixed.
Description
Even when SQL_ATTR_CONNECTION_TIMEOUT is set in ODBC to detect the network disconnection, it may wait longer than the given timeout setting, and this error has been fixed.
Symptom
Even when SQL_ATTR_CONNECTION_TIMEOUT is set in ODBC, it can not detect the network disconnection in a specific situation, so it keeps waiting for the server's response in ODBC.
Workaround
Add the following attributes to odbc.ini, so that it can quickly detect the network disconnection.
KEEPALIVE_IDLE_TIME
KEEPALIVE_INTERVAL
KEEPALIVE_COUNT
Or, alter the following kernel attributes, so that it can quickly detect the network disconnection.
net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_probes
net.ipv4.tcp_keepalive_time
net.ipv4.tcp_retries2
ISSUE-5160 When LONGVARCHAR, LONGVARBINARY parameters exist in ODBC global connection environment, the client's memory increases, and this error has been fixed.
Description
When repeatedly performing the statement including LONGVARCHAR, LONGVARBINARY parameters in ODBC global connection environment, the client's memory increases, and this error has been fixed.
Symptom
When repeatedly performing the SQL including LONGVARCHAR, LONGVARBINARY parameters with the same statement in ODBC global connection environment, the client's memory increased.
Workaround
The patch is required.
ISSUE-5156 SQLSTATEs of some errors have been changed.
Description
SQLSTATEs of some errors have been changed.
Symptom
SQLSTATEs of some errors have been changed as follows.
Error number | Old SQLSTATE | Modified SQLSTATE | Message |
|---|---|---|---|
13034 | RD000 | 08S01 | Service is not available |
16351 | 08000 | HY000 | failed to connect to the cluster member '%s' |
16523 | HY000 | 08S01 | the database system is shutting down |
25001 | HY000 | 08001 | Server is not running |
Workaround
The patch is required.
ISSUE-5147 Even when it was set as PROTOCOL=TCP in the configuration of CYMON, it was connected by using DA, and this error has been fixed.
Description
Even when it was set as PROTOCOL=TCP in the configuration of CYMON, it was connected by using DA. However, this error has been fixed, so it is connected by using TCP now.
Symptom
If it is set as PROTOCOL=TCP in the configuration of CYMON, it should be connected by using TCP, but, in reality, it is connected by using DA.
Workaround
The patch is required.
ISSUE-5004 A deadlock occurs on the slave's pre-process phase during the replication with CYCLONE in the cluster environment.
Description
A deadlock intermittently occurs during the replication with CYCLONE in the cluster environment.
Symptom
The replication is not proceeding and it seems to be stop. It is because a deadlock occurs during the pre-process for the replication in the cluster environment. The replication is not proceeding any more even when monitoring with CYMON.
Workaround
Reset the master and the slave of CYCLONE.
ISSUE-4985 The progressing information in slave has been added to the CYCLONE's monitoring information.
Description
The information being processed in slave (Apply_FileSeq, Apply_BlockSeq, Apply_Commit_Lsn) has been added to the CYCLONE's monitoring information.
Symptom
N/A
Workaround
The patch is required.
ISSUE-4882 It is modified to report the detatiled error message when an error occurs while processing CYCLONE SYNC.
개요
It is modified to record the detailed error message together with ERROR OCCURRED on the trace log when an error occurs while processing CYCLONE SYNC.
Symptom
N/A
Workaround
The patch is required.