Version information
Release date: April 18, 2022
Version: V3.2.3
Overview
OceanBase Database V3.2.3 improves the compatibility and performance of the database kernel and enhances quality assurance to meet the production requirements of customers. Core enhancements:
Enhanced compatibility with MySQL
Sequence objects, common table expressions (CTEs), CHECK constraints, character set settings in the CAST function, GET DIAGNOSTICS statements in stored procedures, and the SEND_LONG_DATA(24) protocol are supported.
Enhanced compatibility with Oracle
Database links to Oracle (DBLink) are supported. This version allows you to set initial values for sequence objects and introduces the DBMS_LOB.COMPARE system package function.
Optimized performance
Table API queries, NLJ operators for partitioned tables, and regular expressions are optimized.
Improved stability
Data integrity verification for backup files is enhanced, and selectivity computing logic is optimized.
New features
Enhanced compatibility
Compatibility with MySQL
Supports sequence objects.
Project delivery results show that business systems of customers are highly dependent on sequence objects. To simplify adaptation during business migration and improve the convenience of migration, in MySQL mode, OceanBase Database supports sequence objects and the
CREATE/ALTER/DROP SEQUENCEoperations. It allows you to perform the CURRVAL and NEXTVAL operations and reset the values of the objects. The value range of an object is INT64_MIN to INT64_MAX.Supports common table expressions (CTEs).
A CTE is a temporary result set that is not stored. It is usually referenced multiple times during a query. The CONNECT BY statement can be replaced with a CTE in some scenarios. The CTE syntax of OceanBase Database is compatible with MySQL 8.0. OceanBase Database supports recursive and non-recursive CTEs.
Supports CHECK constraints.
CHECK constraints are intended to maintain user-defined integrity and are usually used to check acceptable data or data formats of specified columns in a table. In earlier versions of OceanBase Database, the CHECK clause is parsed but not executed and is only used for partition pruning and optimization. This is consistent with that of the CHECK clause in MySQL 5.7. In this version, the behavior and restrictions of CHECK constraints are modified to be compatible with MySQL 8.0. You can use the
CREATE/ALTER/DROP TABLEstatements to create, modify, and destroy CHECK constraints.Supports character set settings in the CAST function.
A character set parameter is added to the CAST function. This allows you to convert any type of value into a value of the specified type and character set, as shown in the sample statement:
SELECT CAST(1 AS CHAR CHARACTER SET UTF8MB4) FROM DUAL.Supports the GET DIAGNOSTICS statement.
Stored procedures usually use the GET DIAGNOSTICS statement to process or debug programs. The GET DIAGNOSTICS statement allows applications to check diagnostic information generated by SQL statements. In addition to the handler context, it obtains current diagnostic information to check the execution of SQL statements.
Supports the SEND_LONG_DATA(24) protocol.
OceanBase Database supports stream processing of data by using PrepareStatment. When you set the
useServerPrepStmtsparameter of JDBC to True and use thesetAsciiStream/setBinaryStream/setCharacterStream/setBlob/setClobfunction to set column values, the data is sent to the destination (OBServer or ODP) in batches by using a SEND_LONG_DATA(24) protocol command. When the Execute_statement(23) command is received, the destination reads the cached data and continues with the next message interaction.Supports subqueries in stored procedures.
OceanBase Database enhances SQL capabilities of stored procedures and allows you to execute subquery statements in stored procedures.
Compatibility with Oracle
Supports database links to Oracle (DBLinks).
DBLink is a built-in query client that allows business applications to access a remote database in the same way DBLink accesses a local database during SQL query execution. OceanBase Database adopts the Oracle Call Interface (OCI) driver to connect to Oracle databases in read-only mode. OceanBase Database supports access to table objects, displays query plans, and optimizes most built-in operators such as SCAN, SORT, and JOIN of Oracle databases.
OceanBase Database allows you to set initial values for sequence objects.
You can reset the initial values of sequence objects or set the initial values to specified values. Example:
ALTER SEQUENCE S1 RESTART WITH 3.Supports the DBMS_LOB.COMPARE system package function.
OceanBase Database supports BLOB and CLOB data types and supports comparison of complete or partial LOB data.
Performance optimization
Optimizes Table API queries.
Table API data interaction is optimized from the blocking query mode to the non-blocking query mode. This prevents a query request from exclusively occupying a worker thread and affecting the overall processing efficiency of the cluster. After executing a bulk scan and sending the results to the client, the worker thread of the query request starts to execute another query task, without waiting for interactive requests from the client. After optimization, the batch query throughput of the Table API is increased by approximately 300%.
Optimizes NLJ operators for partitioned tables.
This optimization improves the reuse of the associated Rescan, Table Scan, and Merge operators, the caching of macroblock metadata, and the selection of code-level execution paths. The NLJ performance is increased by 60% and the batch query performance by 40% in running the Sysbench benchmark.
Optimizes regular expressions.
When executing regular expressions, OceanBase Database calls regular expressions from third-party libraries for parsing and matching. If the business data volume is large, additional locked resource conflicts caused by the initialization of regular expressions increase the latency. To resolve this issue, OceanBase Database optimizes the context reuse logic for regular expressions to reduce the frequency of calling regular expressions from third-party libraries. This improves the processing performance of a single-query regular expression that involves millions of rows of data by approximately 500%.
Enhanced stability
Enhances data integrity verification for backup files.
Data backup is an important capability for improving database reliability and protecting data security. However, the correctness of data cannot be ensured due to uncontrollable factors such as damage and aging of storage devices. Therefore, OceanBase Database enhances the verification of backup data. This allows you to initiate data verification tasks by cluster, tenant, or shard. You can recompute macroblock verification values and intra-block data organization relationships and compare them to identify damaged data blocks at the earliest opportunity. This helps reduce the impact of data damage. In addition, OceanBase Database optimizes the concurrency and scheduling logic to improve verification performance.
Optimizes the selectivity computing logic.
OceanBase Database optimizes the selectivity computing logic to reduce redundant memory usage in the log plan and the frequency of querying statistics. In addition, OceanBase Database optimizes the logic of producing and maintaining NULL numbers and MIN/MAX values to improve the selectivity computing accuracy. OceanBase Database also optimizes the histogram processing logic to reduce the selectivity computing error in scenarios where base table predicates are not used.
Compatibility changes
Parameters
| Parameter | Default value | New/Change | New default value | Description |
|---|---|---|---|---|
| trace_log_slow_query_watermark | 100 ms | Change | 1s | Specifies the execution time threshold for queries. A query whose execution time exceeds this threshold is recorded as a slow query in trace logs. The default value is changed to 1s to prevent massive logs from affecting the performance when the system is overloaded. |
| enable_merge_by_turn | True | Change | False | Specifies whether to enable the multi-zone rotating compaction strategy. This strategy is disabled for business applications in most scenarios to speed up compactions. |
| clog_sync_time_warn_threshold | 100 ms | Change | 1s | Specifies the time threshold of transaction log synchronization between the leader and follower. If the synchronization time exceeds the threshold, alerts are sent. The default value is modified based on the performance of business applications in most scenarios. |
| clog_sync_time_warn_threshold | 5 | Change | 100 | Specifies the number of minor freezes between two major freezes. The default value is increased to avoid business jitters caused by frequent major compactions. |
Behavior changes
In MySQL mode, the behavior of CHECK constraints is changed to be compatible with MySQL 8.0. The earlier versions are compatible with MySQL 5.7.
Compatible with MySQL 5.7: CHECK constraints with duplicate names are not allowed in the same table but are allowed in different tables of the same database.
Compatible with MySQL 8.0: CHECK constraints with duplicate names are not allowed in the same table or in different tables of the same database.
An earlier version may contain CHECK constraints with duplicate names. After you upgrade OceanBase Database to this version, you must modify the duplicate names.
In Oracle mode, OceanBase Database returns an error if you update a field in the UPDATE statement multiple times, which is the same in Oracle.
Upgrade path
Upgrade from V3.2.1 or V3.2.2 to V3.2.3 is supported.
Upgrade from V3.1.2 to V3.2.3 is supported. You must download the software packages V3.2.0, V3.2.1, and V3.2.2 and upload them to OceanBase Cloud Platform (OCP).
Upgrade from V2.2.77 is supported. You must upgrade OceanBase Database to V3.1.2 first and then to V3.2.3.
Supported components
The following table describes the recommended versions of components used with OceanBase Database V3.2.3.
| Component | Version |
|---|---|
| ODP | V3.2.3 |
| OCP | V3.2.3 |
| ODC | V3.2.3 |
| OMS | V3.3.0 |
| OBCI | V2.0.2 |
| ECOB | V1.1.6 |
| JDBC | V2.2.9 |
| OBClient | V2.1.1.2 |
| OBLOADER/OBDUMPER | V2.3.0 |
Fixed issues
CLOG files cannot be opened when system file handles are insufficient.
An error occurs if you use the
CREATE TABLE ASstatement to create a partitioned table in MySQL mode.Restored tenant statistics cannot be updated for a long time. This causes inaccuracy of the SQL plan.
The length of a table name in MySQL mode is inconsistent with the maximum length in a MySQL database.
V3.2.3 BP1
Version information
- Release date: April 29, 2022
- Version: V3.2.3 BP1
Enhanced features
- The keyword DISTINCTROW is supported in MySQL mode.
Compatibility changes
- The value range of the
high_priority_net_thread_countparameter is changed to 0-64.
Fixed issues
- The adaptation issue between the DBLink and ODP is fixed by adding the cluster name.
- The leader is immediately switched after a DELETE transaction is committed. This leads to transient data inconsistency in read-only queries that are executed on the new leader because the transaction information is not fully obtained in time.
V3.2.3 BP2
Version information
- Release date: May 30, 2022
- Version: V3.2.3 BP2
Enhanced features
- The export of table data directly to an Alibaba Cloud Object Storage Service
(OSS)bucket by running the SELECT INTO command is supported. - The DETERMINISTIC property is supported for stored procedures and methods in MySQL mode.
Fixed issues
- The local index scheduling job does not end when it is complete, which leads to log spamming.
- After a session is killed, the record of the session still exists in the
__all_virtual_processlisttable. - The execution of SQL statements returns the error code 4013 because the OBServer and the client use different character sets.
- When a minority of replicas fail, the obtained information about the replica table is incorrect because of the delayed update of the location cache.
- The query of the information_schema.columns view in MySQL mode by using a null condition returns incorrect column values.
- It takes quite some time to get the value of data_size in a scan of the
__all_virtual_storage_stat table.
V3.2.3 BP3
Version information
- Release date: June 22, 2022
- Version: V3.2.3 BP3
Enhanced features
- The SM4 algorithm is supported for transparent data encryption (TDE).
- In Oracle mode, default values of column fields can be defined by using the Sequence function.
- Stored procedures support the definition and use of struct functions.
- The performance of the Limit operator is improved. The Limit operator can be pushed down to the Join operator.
- You can specify a character set for files by using the
SELECT INTOstatement.
Added parameters
- The cluster-level parameter
_load_tde_encrypt_engineis added. This parameter specifies whether to load the qualified encryption engine provided by BabaSSL for data encryption. The default value NONE indicates that no encryption engine is loaded. When the parameter is set to"antssm_sm4", the encryption engine is loaded. To use the encryption engine, you must install the encryption software module in advance. Fixed issues - Logs are generated excessively with the size overflow issue.
- The observer process unexpectedly exits due to an "array index out of bounds" error in the fast parse phase.
- In Oracle mode, when a prepared statement is enabled, the return value of the NUMTODSINTERVAL() function is truncated to a specific precision.
- After deadlock detection is enabled, memory usage of LockWaitMgr in the sys tenant is high.
- In Oracle mode, a character set conversion error occurs when a DBLink is created to query data in the Oracle database.
- When a lock conflict occurs during the execution of a stored procedure, the SQL statements that have been executed are not rolled back.
- In the parallel execution framework, duplicate data is returned for queries because the pushdown of operator filtering fails.
- A syntax error occurs when a hint is specified in the Update clause of the MERGE INFO statement.
- In Oracle mode, an error occurs when the DBMS_JOB package is used to create a scheduled task, and a value is assigned to the INTERVAL parameter to extract the date.
- In Oracle mode, a compilation error is returned when the
SELECT INFOstatement is used in a stored procedure to define a cursor. - When the plan cache reaches the upper limit, the execution of setAutoCommit fails after the client restarts.
- In MySQL mode, an error occurs when a trigger is executed by using an INSERT statement to insert an object into a column of the SET data type.
- The queue_time field is displayed as a negative value in the
v$sql_auditview. - The error code 4013 is frequently returned when SELECT statements are concurrently executed after I/O throttling is enabled.
- An error occurs when an array element in a stored procedure directly calls a member function.
- Clog files are migrated upon a server failure, which leads to the result that renamed files are not persistently stored on the disk.
Considerations
- For V3.2.2 and later, if the value of the
ob_enable_batched_multi_statementparameter is set to True in batch processing scenarios such as BenchmarkSQL TPC-C benchmark, the performance is degraded. We recommend that you use the default value False. - We recommend that the number of partitions created on a single OBServer does not exceed 100,000.
V3.2.3 BP4
Version information
- Release date: August 5, 2022
- Version: V3.2.3 BP4
Enhanced features
- Table-level hints can be set in parallel. Example:
select/*+ parallel(a 2) */ * from t1 a;. - The debugging stability is enhanced for stored procedures. Debugging on the ARM platform is supported.
- Adding partitions is supported in specific scenarios. You can add partitions at the beginning or in the middle of RANGE-partitioned tables. When you add a partition, make sure that no data is written to this partition. You can enable this feature by using the tenant-level parameter
_enable_add_between_range_partitions.
Compatibility changes
- The display of version numbers is changed. You can use the
select version()function to query the version number compatible with MySQL, such as 5.7.25-OceanBase-v3.2.3.1. You can customize the settings of compatible version numbers. You can use theselect ob_version()function to query the version number of OceanBase Database, such as V3.2.3.1. - In MySQL mode, the definition and acquisition of the system variable have_query_cache are supported. The value of this system variable is always NO.
- In MySQL mode, the NO_ZERO_DATE and ERROR_FOR_DIVISION_BY_ZERO modes are added, and the NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION modes are supported.
- In Oracle mode, the value of the data_length field in the ALL_TAB_COLUMNS view is compatible with the field length in Oracle.
- In Oracle mode, the length of a created variable array must be a positive integer.
- The cluster-level parameter
_enable_fuse_row_cacheis added. This parameter specifies whether to use the snapshot version to check whether the row cache is invalid. The default value is FALSE.
Supported components
The MySQL-compatible version numbers in MySQL mode are displayed since OceanBase Database V3.2.3 BP4. The following table lists the versions of the required components. |Component|Version| |---|----| |ODP| V3.2.3.2| |OCP |V3.3.2| |ODC |V3.3.3| |OMS |V3.3.1| |OBCI |V2.0.2| |ECOB |V1.1.6| |JDBC |V2.2.10.2| |OBClient |V2.1.1.3| |OBLOADER/OBDUMPER |V3.0.1|
Fixed issues
- In Oracle mode, the observer process unexpectedly exits due to a query that uses the ORA_ROWSCN pseudocolumn.
- If you do not specify to rebuild the global indexes when you drop or truncate a partition, the subsequent locality change may be suspended.
- After physical backups are restored, the latest data records cannot be queried due to inconsistent log IDs.
- When you call a member procedure in a user-defined type, the system reports an error indicating that the number of parameters is incorrect.
- In Oracle mode, if the Oracle character set is set to
WE8ISO8859P1, an error occurs when you create a DBLink to query data in a table. - The recovery of a tenant fails because the locality of the tenant is inconsistent with that of the tables.
- The returned results are incorrect when the ROLLUP operator contains columns of the INTERVAL DAY type.
- An error occurs when the CONVERT function is used to convert non-binary data.
- The OBServer stops services due to a deadlock caused by the failure in applying for memory for log printing.
- The query results returned for the window functions using ORDER BY NULL are inconsistent with those of MySQL and Oracle.
- When a partition is truncated, the system returns the error code 4016 indicating a timeout.
Considerations
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- The fourth digit in the version number V3.2.3 BP4 is increased to 1. The fourth digit in the version number is an internal version number and indicates the technical solution for the product upgrade.
- We recommend that the number of partitions created on a single OBServer does not exceed 100,000.
V3.2.3 BP5
Version information
- Release date: September 9, 2022
- Version: V3.2.3 BP5
Enhanced features
- Prepared statements are supported in SQL texts. The Prepared Statement API uses the binary protocol and achieves higher execution efficiency than the interactive SQL API. To use the Prepared Statement API, perform the following steps: ○ Use the PREPARE statement to prepare an SQL statement for execution.
PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2))'; ○ Use the EXECUTE statement to execute the prepared statement.SET @a = 3; SET @b = 4; EXECUTE stmt1 USING @a, @b; ○ Use the DEALLOCATE PREPARE statement to release the prepared statement.DEALLOCATE PREPARE stmt1; - Independent I/O subprocesses of external storage media are supported for backup and restore. During the backup and restore process of OceanBase Database, I/O APIs of underlying storage media (external media) are called, such as the read/write APIs of Network File System (NFS) and Object Storage Service (OSS). To prevent the OBServer from failures exit due the to read/write instability of external storage media, the storage I/O API for backup and restore is decoupled. Independent subprocesses are used to narrow the impact scope of faults. You can enable this feature by using the tenant-level parameter
enable_ob_esi_process. - In MySQL mode, the ADDTIME() function is supported to add the specified time interval to the given date and time. Example:
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002'); - In MySQL mode, the DAYNAME() function is supported to return the name of the workday of the given date. Example:
SELECT DAYNAME('2018-01-8') - Log output is optimized. Unnecessary lbt log entries are deleted from created partitions. Compatibility changes
- The cluster-level parameter
enable_ob_esi_processis added. ESI is short for External Storage Interface. This parameter specifies whether independent subprocesses of external storage media are used for backup and restore. The default value is FALSE. Example:alter system set enable_ob_esi_process = true; - The cluster-level parameter
ob_esi_session_timeoutis added. This parameter specifies the timeout period of the active resources for the independent I/O subprocesses of external storage media. The value range is[10s, 30m]. The default value is 1m. Example:alter system set ob_esi_session_timeout = 40s; - The cluster-level parameter
ob_esi_rpc_portis added. This parameter specifies the communication port between the independent I/O subprocess of the external storage medium and the OBServer. The value range is(1024, 65536). The default value is 2501. Example:alter system set ob_esi_rpc_port = 10088; - The upper limit of window functions is changed. A maximum of 32 window functions are allowed in OceanBase Database in both Oracle and MySQL modes. In Oracle mode, the number of allowed window functions is no longer limited and is consistent with that in Oracle. In MySQL mode, the number of named window functions cannot exceed 127.
Fixed issues
- When the UNION ALL operator generates a local execution plan, the error code 4225 is returned because no leader check is performed for the queried partitions.
- On the ARM platform, OBServer startup fails due to the compatibility issue of the libunwind library on Kylin OS and Unity Operating System (UOS).
- When batch jobs are run, minor compactions are frequently triggered due to high memory usage of the SqlExecutor module, which then causes the tenant performance to degrade drastically.
- In Oracle mode, if the character set of the tenant is set to GBK, the error code 4285 is returned when the
UTL_I18N.STRING_TO_RAWfunction is executed because the character set specified for parameters is invalid. - During the two-phase commit of an XA transaction, the RPC traffic is heavy due to an excessive number of participants in the commit process, which slows down the advancement of the transaction.
- Major compactions in the system are suspended after the error code 4013 is returned because the checksums of the data table and index table are inconsistent.
- The cluster restart times out due to an excessive number of schema history records.
- When a type is created, the field
AUTHIDis incorrectly displayed asAS THID. - Recovery fails because the consistency checkpoint in the backup files is different from that in recovery verification.
- If you set the parameter type to
object typewhen you create a procedure, the parameter is directly generated by the construction method when the procedure is executed, and a warning is generated, indicatinginternal error code, arguments: -5180, Incorrect argument type to variable. - If a backup task fails to be forcibly canceled, the backup status stays in Stopping.
- In the primary-standby deployment mode, records in the virtual table
__all_server_event_historyexpand fast due to frequent execution of theALTER SYSTEM CHANGE TENANToperation on the primary database. - Custom aggregate functions cannot be called across schemas.
- The error code ORA-00904 is returned when a cursor in PL is triggered by using the ROWID alias.
- In MySQL mode, when the
NO_ZERO_DATEorSTRICT_ALL_TABLESmode is used, the query results by using theSTR_TO_DATEfunction are different from those in MySQL. - The error code 1074 is returned when the
CREATE TABLE AS SELECT JSON_ARRAYstatement is used to create a table. - In Oracle mode, the system reports an error indicating PL primary key conflicts when the
OCI_BATCH_ERRORShandle is executed by using OBCI. - In MySQL mode, a large number of CPU resources are consumed when ArcGIS expressions are executed in parallel. As a result, the client terminates the execution of the SQL statement. However, the background thread continues the execution.
- When the
__min_full_resource_pool_memoryparameter is set to an abnormal value, the OBServer can still be started.
Considerations
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- The fourth digit in the version number V3.2.3 BP4 is increased to 1. The fourth digit in the version number is an internal version number and indicates the technical solution for the product upgrade.
- We recommend that the number of partitions created on a single OBServer does not exceed 100,000.
- The OBServer supports text editing by using prepared statements since OceanBase Database V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
V3.2.3 BP6
Version information
- Release date: November 15, 2022
- Version: V3.2.3 BP6
Enhanced features
- You can change the AccessKey ID and AccessKey Secret during data backup and restore. The backup feature of OceanBase Database allows you to specify an Alibaba Cloud Object Storage Service (OSS), Tencent Cloud Object Storage (COS), or Huawei Object Storage Service (OBS) bucket as the backup destination. However, you cannot modify the
access_idoraccess_keyparameter of the backup destination during the backup. If the AccessKey ID or AccessKey Secret is changed, you must stop the log backup and change the backup directory. Therefore, this version provides theALTER SYSTEM change external_storage_dest PATH[=]'xxx?host=xxx' set ACCESS_INFO[=]'access_id=xxx&access_key=xxx';command for you to modify the AccessKey ID and AccessKey Secret of the backup destination. The relevant content in GConf is updated and saved accordingly. Observe the following considerations when you use this command:- Before you run the command to update the AccessKey ID and AccessKey Secret for accessing the OSS, COS, or OBS bucket, we recommend that you stop the ongoing second backup task. We also recommend that you delete the old AccessKey ID and AccessKey Secret one hour later after you run the command.
- If you modify the AccessKey ID and AccessKey Secret during a second backup task, and the task is stuck, you must forcibly cancel the task and change the directory to resume the task.
- You can specify the query range in an IN expression to improve the query performance. An IN expression can be considered a special equality expression. When a filter predicate contains an index, OceanBase Database first searches for data in the specified range in the indexed table based on the range determined by the predicate, thus avoiding full table scanning and improving the query efficiency.
- Table API supports the Filter() and QueryAndMutate() functions. If you call only the Filter() function, it supports the LT, GT, LE, GE, NE, and EQ comparison operators. The FilterList() function is also supported. You can specify multiple Filter() functions in a FilterList() function by using the AND and OR relational operators.
- Scalar functions are supported. A scalar function is a function that returns one value per row. For example, the ABS() function takes a numeric column as the argument and returns the absolute value of each value in the column. Example:
SELECT {FN ABS(-1)} FROM DUAL; - Partition routing is optimized. OceanBase Database Proxy (ODP) can obtain the default value of a column, which improves the routing accuracy.
- Data security is enhanced. The Transparent Data Encryption (TDE) feature is integrated with Alibaba Cloud Key Management Service (KMS).
Fixed issues
- The error code 4013 is returned because the checksum values of the primary table and the index table are inconsistent when the
SELECT FOR UPDATEstatement and a major compaction task are executed in parallel. - A major compaction task times out when a NULL value is written for the LOB data type during the major compaction.
- The INSERT operation on a temporary table times out and exits without releasing the memory.
- In Oracle mode, the error code 4016 is returned during the execution of a hierarchical query due to different parameter values.
- In a public cloud environment, microblock prefetching increases I/Os when repeated I/O requests are sent and causes idle I/Os.
- The OBServer node fails due to the abnormal closure of a cursor when the entity of the cursor is simultaneously used by multiple sessions at a high concurrency.
- The error code 5889 is returned during the execution of the
GOTO LABELstatement in a loop. - The execution of the
ALTER SYSTEM BACKUP DATABASEstatement times out because the schema information of the node is too much. - The progress of an Extended Architecture (XA) transaction is slow and all tenant threads are occupied due to the large number of participants in the transaction commit process, which causes excessive traffic of remote procedure calls (RPCs) between OBServer nodes.
- When an SQL statement is executed in PS mode in an Oracle tenant, the following error message is returned because the value of the bound variable is not real:
field list ambiguously defined. - When an SQL statement is executed in an Oracle tenant, the ORDER BY clause supports only valid columns. Constants or aliases are unsupported.
- When a DDL statement is executed in PL, the data in the temporary table is not cleared.
Considerations
OceanBase Database V3.2.3 BP4 and later are compatible with the MySQL version number format, such as 5.7.25-OceanBase-v3.2.3.1. We recommend that you use the latest supporting tools.
The fourth digit in the version number of OceanBase Database V3.2.3 BP4 is increased to 1. The fourth digit in the version number is for internal use and indicates the product compatibility upgrade version.
We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
The OBServer supports text editing by using prepared statements since OceanBase Database V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
OceanBase Database V3.2.3 BP6 and later can obtain the default values of a column to improve the routing accuracy. This feature is supported by ODP V3.2.9 and later.
OceanBase Database V3.2.3 BP6 and later support KMS storage encryption. To use this feature, you must upgrade libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.
Notice
OceanBase Database V3.2.3 BP5 can be directly upgraded to V3.2.4, but OceanBase Database V3.2.3 BP6 cannot. Instead, it can be upgraded to V3.2.4 BP1.
V3.2.3 BP7
Version information
- Release date: January 19, 2023
- Version: V3.2.3 BP7
Enhanced features
- The
FROM_BASE64()andTO_BASE64()functions are supported in MySQL mode. - The GRANT syntax can be used to grant privileges on the
DBMS_RESOURCE_MANAGERsystem package. - The access performance of the
information_schema.table_constraintsvirtual table is improved.
Compatibility changes
The value range of the internal_sql_execute_timeout parameter is changed to [1000us, 1h]. The maximum value is changed from 10min to 1h, and the default value is still 30s.
Fixed issues
- Some tables created by using CTAS are mistakenly deleted.
- Memory leak occurs when indexes are created on JSON generated columns.
- When a plan hits the plan cache, the execution result of
MERGE INTOis wrong. - Errors are returned when the LPAD function processes special characters whose ASCII codes are 0x03, 0x04, 0x05, and 0x06.
- If SQL subqueries contain the same column names, the error
field list ambiguously definedis returned during PS execution. - The out-of-bounds exception of
dbms_sql.column_valuecauses anextend_sizeerror, which further causes memory allocation and access errors. - If a freeze or minor compaction is triggered during the execution of
INSERT IGNORE INTO, this statement may be hung up. - After a maintenance operation is performed on a template-based subpartition, such as partition creation, the newly created partition cannot be found in
DBA/ALL/USER_TAB_SUBPARTITIONS. - An error is returned in an attempt to access
JSON PATH SEEKof an internal subnode in an emptyJSON object. This issue is not only involved injson_extractscenarios but also scenarios whereJSON pathsare used, such asJSON PATH:where col1->'$."data"."a"' = '123'in a WHERE condition.
Considerations
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
- The fourth digit in the version number V3.2.3 BP4 of OceanBase Database is increased to 1. The fourth digit in the version number is for internal use and indicates the product compatibility upgrade version.
- OceanBase Database supports text editing by using prepared statements since V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
- Since OceanBase Database V3.2.3 BP6, the default values of a column can be obtained to improve the routing accuracy. ODP supports this feature since V3.2.9.
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- KMS storage encryption is supported since OceanBase Database V3.2.3 BP6. To use this feature, you must upgrade libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.
V3.2.3 BP8
Version information
- Release date: April 15, 2023
- Version: V3.2.3 BP8
Enhanced features
- In the case of node crash or leader switchover, the fast failure of SQL queries can be triggered to reduce the response latency.
- OBStack is integrated into the OBServer installation package to obtain information about thread stacks in a lightweight and real-time manner.
- The
_enable_reserved_user_dcl_restrictionparameter is provided to control whether general users can modify built-in users.
Parameter changes
| Parameter | New/Change | Default value | Description |
|---|---|---|---|
_max_trx_ctx_count |
New | 700000 | The maximum number of transaction contexts allowed for a single participant. This is a cluster-level parameter. Value range: [100000, MAX). |
ob_query_switch_leader_retry_timeout |
New | 0 | The longest retry time allowed for a failed query, in microseconds (us). This is a tenant-level parameter. Value range: [0, unlimited). The value 0 indicates that the retry timeout check is disabled. |
_with_subquery |
New | 0 | The policy that the optimizer uses to control common table expressions (CTEs). This is a tenant-level parameter. Valid values: 0, 1, 2.
|
_xsolapi_generate_with_clause |
New | true | Specifies whether the optimizer extracts CTEs. This is a tenant-level parameter. Valid values: true, false. |
_optimizer_group_by_placement |
New | true | Specifies whether to enable the GROUP BY PLACEMENT rewrite algorithm of the optimizer. This is a tenant-level parameter. Valid values: true, false. |
_enable_reserved_user_dcl_restriction |
New | false | Specifies whether built-in users can be modified only by built-in users. This is a cluster-level parameter. Valid values: true, false. |
Fixed issues
- The query range extraction fails and the query results are incorrect if a WHERE clause contains four or more indexed columns that meet the following conditions: the first column is an equivalent predicate, the second column a range predicate, the third column an IN expression, and the fourth column a random predicate.
- When a subpartition is queried, the OBServer node returns empty routing information during the processing of default parameter exceptions. This causes the obproxy process to perform random routing and increases the query time.
- In an XA transaction, the rollback of a failed nested SQL statement results in scheduler context leakage, which accumulates to exceed the upper limit and causes the unavailability of the transaction service on the corresponding node.
- In a nested loop join, the execution plan fails if the
TEMP TABLE TRANSFORMATIONoperator exists or pushdown predicates are generated for non-base table conditions. - In a multi-table join, the
unexpected operator typeerror is returned if the right table of a nested loop join operator uses a global index and the Broadcast to Host Distribution (BC2HOST) algorithm is used. - If any indexes exist on columns C1, C2, and C3, and the SQL statement contains the
(C1 = ? OR C1 = ? ...) AND C2 IN (...) AND C3 ...clause, the range extraction fails, resulting in incorrect results. - If you use a collection constructor in PL to initialize the memory for collection variables, the memory cannot be released when PL exits. This is because the memory lifecycle is managed at the tenant level and causes memory leaks.
- If too many user-defined functions (UDFs) are compiled at a time, statement memory is consumed for type checking and memory bloat occurs.
- Memory leaks occur during the parsing of the
SELECTpart in theINSERT ALLstatement. - Some indexes are abnormal after a successful physical restore.
- The following error is reported when you access a view that has a synonym:
ORA-04063: view 'xxx' has errors. - The plan cache cannot be hit due to incorrect settings of parameterized SQL IDs, which increases the execution time of the INSERT statement.
- Inaccurate error messages are returned if multiple layers of error stacks are nested in PL.
- It takes a long time to acquire a plan because the
UPDATE IGNOREstatement is not handled during expression precomputation. - In Oracle mode, information about DBLink-related views cannot be displayed by running the DESC command.
- In Oracle mode, when you use the TO_NUMBER function to convert a value of the NCHAR data type, the
Internal errorerror is returned. - A syntax error is reported when the old engine or PX engine executes a stored procedure that contains the MERGE INTO statement where a DBLink is used to connect to a secondary cluster of the destination database.
- SEQUENCE.NEXTVAL in the parallel DML (PDML) plan cannot be executed in parallel.
- If column C1 is an indexed column, the WHERE clause contains
C1 in (xx) and C1 in (yy), and the number of parameters exceeds 128, the execution triggers memory leakage. - An error is reported during the execution in the following scenario: OCI is used to connect to the database and the attribute
OCI_ATTR_FETCH_ROWIDis set. A trigger that contains theSELECT ... FOR UPDATEstatement is defined in the data table. The DML statements and theSELECT ... FOR UPDATEstatement are sent to different servers for execution, and the DML statements hit the plan cache. - If a query statement contains two or more IN expressions and at least one vector expression, and both IN expressions have indexes, the extraction of query range fails and an error is reported.
- When an SQL statement that contains a
last_insert_id()expression in the WHERE clause is executed to query the primary key column or an index column, a full-table scan is performed during the query if thelast_insert_id()expression is not precomputed. - If a row of a partitioned table contains a large object that overflows the storage capacity, an error is reported during the query.
- In DBLink scenarios, unnesting errors occur due to an incomplete unnesting mechanism for nested joins.
Considerations
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
- The fourth digit in the version number V3.2.3 BP4 of OceanBase Database is increased to 1. The fourth digit in the version number is for internal use and indicates the technical solution for the product upgrade.
- OceanBase Database supports text editing by using prepared statements since V3.2.3 BP5. OceanBase Database Proxy (ODP) supports this feature since V3.2.7.1.
- Since OceanBase Database V3.2.3 BP6, the default values of a column can be obtained to improve the routing accuracy. ODP supports this feature since V3.2.9.
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- KMS storage encryption is supported since OceanBase Database V3.2.3 BP6. To use this feature, you must upgrade Libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.