v11.4
CUBRID 11.4 is the latest stable version that includes new features, significant changes and enhancements.
CUBRID 11.4
- PL/CSQL (Procedural Language) Support
- Improved Performance through optimizer and index processing enhancements
- Performance boost in data recovery through parallel processing
- Extended Result Cache Functionality
- Memory Monitoring Feature Added
- Improved data dump performance
CUBRID 11.4 introduces support for PL/CSQL, the procedural language extension of CUBRID SQL, enabling the development of stored procedures and functions. PL/CSQL enhances CUBRID SQL with procedural programming constructs such as conditional statements, loops, variables, error handling, and modularization through internal procedures and functions―features that are difficult to implement using declarative SQL alone.
SQL statements can be seamlessly embedded within PL/CSQL blocks, making it easier to implement complex business logic and perform data manipulation tasks more efficiently.
CUBRID 11.4 significantly improves query execution performance by enhancing internal statistics used during query planning. These enhancements include tracking the number of distinct values and increasing the number of sampled pages during statistics collection.
The engine now supports HASH JOIN and the LEADING hint to accelerate join operations. Additional optimizations include introducing cost formulas for the LIMIT clause and eliminating logically unnecessary join conditions.
Performance is further enhanced through multi-threaded (parallel) processing in the unloaddb utility and during redo recovery operations.
The result cache feature has been expanded to support correlated scalar subqueries and Common Table Expressions (CTEs). Additionally, usage details of the result cache are now included in trace logs, providing users with deeper insights for performance analysis and optimization.
CUBRID 11.4 introduces a memory monitoring capability that allows users to track and analyze memory usage within the CUBRID system. This feature helps identify potential memory mismanagement or leaks, thereby improving system reliability and resource control.
Change logs:
SQL Changes and Related Bug Fixes
55884e7 [CBRD-23768] Unnecessary row X-LOCK is set depending on the plan (#4916)
5bcf5e8 [CBRD-24795] When using a function under <= and >= conditions, the plan generator does not perform a range scan (#4365)
6fee335 [CBRD-24798] Changing the index structure using ALTER INDEX is treated as an error (#4675)
d9f9ae8 [CBRD-25054] Numeric type column inserted by using rownum does not show error even it's outranged. (#4766)
a35eabc [CBRD-25098] Problem where inst_num() is inappropriately changed to order_by_num() when a subquery containing an ORDER BY is view merged. (#4809)
9718c43 [CBRD-25115] fixed inaccuracy in length limit of where clause when creating filter index (#5021)
4a4d497 [CBRD-25128] In STRING_CAT '||' operation, incorrect handling of null when setting oracle_style_empty_string (#4842)
1251e63 [CBRD-25139] When using oracle style empty string, the result of replace is null. (#4848)
c6ae599 [CBRD-25147] Add SQL syntax to add users as members of the group (#4957)
f6dbc63 [CBRD-25164] Fix error in covered index query results using function indexes (#4881)
9cffae9 [CBRD-25179] A core dump occurs when the CTE query is a false query (null query) (#4890)
8f0d709 [CBRD-25195] A core dump occurs when multiple tables and serial functions are used simultaneously in one query. (#4897)
1858d5d [CBRD-25216] Check if there is enough buffer to store the user-specified name (#4946)
1f1d455 [CBRD-25238] Problem with outer joined views being merged. (#4998)
81709c4 [CBRD-25241] Add SQL syntax to change the owner of the serial (#5038)
1b8cefc [CBRD-25260] Change the behavior of finding server when omitting user schema (#5040)
2d1cdd1 [CBRD-25262] Problem with some show statements not filtering the owner correctly (#5042)
eb67595 [CBRD-25277] 'Outer join query optimization failed.' error occurs in Eliminate INNER JOIN (#5053)
6151673 [CBRD-25279] Casting functions in prepared statements with host variable arguments incorrectly occur syntax errors (#5060)
cfaaeaa [CBRD-25290] _db_auth's rows are not deleted when dropping an user (#5079)
5c9b523 [CBRD-25316] For UPDATE JOIN statements, aggregate functions or analytic functions cannot be used in the SET and WHERE clauses (#5143)
3d6841b [CBRD-25317] The problem is that the Oracle-style LEFT OUTER JOIN is not rewritten as an INNER JOIN if there is a method call and host variables are used in the WHERE clause (#5292)
3d05a09 [CBRD-25318] Problem that the subquery containing orderby_num() is view-merged. (#5140)
04e9a57 [CBRD-25335] Problem where nodes without a join relationship are connected and incorrect results are output. (#5170)
fcce39e [CBRD-25358] error handling when using for update clause for system tables such as db_root, dual, etc. (#5197, #5273, #5882, #6107, #6094, #6047)
44c022c [CBRD-25365] Change 'Creation_time' in 'SHOW VOLUME|LOG|ARCHIVE LOG HEADER' statements to Volume creation time. (#5719)
1c28e7a [CBRD-25372] remove pt_check_class_attr_qspec_compatible (#5366)
e7a7093 [CBRD-25374] sort-limit-optimization does not work when there is an expression containing a bind variable in the limit clause. (#5225)
b2bc156 [CBRD-25382] Support HASH JOIN with hint required (#5221)
3e03344 [CBRD-25393] Allow Oracle style CREATE VIEW with NULL (#5241)
48ed488 [CBRD-25439] Modify to output an error when setting an wrong value in the optimization_level. (#5295)
9d38c67 [CBRD-25446] relative lob locator for ES_POSIX (#5300)
4017adf [CBRD-25448] Problem with orderby_num not being rewritten when removing unnecessary 'order by' (#5299)
1e3a0a4 [CBRD-25449] Remove db_authorization's record when dropping user (#5349)
c032f14 [CBRD-25457] Executing the "AUTO_INCREMENT" and "DEFAULT" attributes separately using the "ALTER TABLE MODIFY" syntax on the same column resulted in an error of two attributes co-existing in that column (#5364)
442123c [CBRD-25484] When using an inner join and an Oracle style outer join together, errors may occur depending on the order of the join predicates (#5365)
3d306ea [CBRD-25505] insert ... select .. on duplicate key update query result error with view (#5400, #5416, #5526, #5541, #5789)
ecca3d6 [CBRD-25617] The phenomenon that position numbers within the analytic function become incorrect occurs when the analytic function is included in the view (#5552, #5589, #5590)
e560ed5 [CBRD-25713] limit max length of CHAR type to 2048 (#5658, #5692, #5996, #5701, #5702)
Optimizer Enhancements
d905c55 [CBRD-25060 The problem of not selecting a better index which is superset of primary key. (#4775, #4935)
5dbe3be [CBRD-25080 Add cost formula for LIMIT clause. (#4786)
bbe8ffd [CBRD-25084 Add fetch time to trace info (#4803, #5098)
c1c0369 [CBRD-25089 Add 'LEADING' SQL hint (#4798 #5219)
86063bc [CBRD-25214 Remove join predicate already logically evaluated. (#4954)
92b6af5 [CBRD-25801 Problems that occur when a hidden column is generated due to ORDER BY clause in a subquery (#5780)
Performance Enhancements
394a26e [CBRD-24988] If a key containing null is inserted after the fence key is created, the decompressed key may have an incorrect nullmap (#4796, #4684, #4812)
a5cbf3e [CBRD-25036] Improved key reading in B-Tree index (#5305)
c1e7266 [CBRD-25082] If the leaf nodes are compressed, store the common prefix in BTREE_NODE_HEADER (#4789)
8a19472 [CBRD-25235] Improved performance of time_format() and date_format() (#5012)
1c99d7d [CBRD-25282] Improve speed of unloaddb (#5074, #5514, #5516, #5557)
c914987 [CBRD-25350] Parallelize redo recovery (#5423)
387f0d0 [CBRD-25454] performance enhancement at TRACE ON (#5313)
b06cc85 [CBRD-25458] Remove the unnecessary length check for string type in qdata_get_tuple_value_size_from_dbval (#5316)
PL/CSQL and Related Bug Fixes
b6103fa [CBRD-24519] slip: remove a keyword REVERSE from identifier (#5926)
3d001a3 [CBRD-24941] fix maximum of DATETIME type values (#5661, #5291, #5521, #5492, #5463, #5444, #5706)
42d49d0 [CBRD-25056] allow records of the same number of fields as the number of table columns in Static SQL UPDATE, INSERT, and REPLACE (#5473, #5396, #5339)
07bdae3 [CBRD-25106] Slip: updating target_method column during ALTER PROCEDURE .. COMPILE (#5728)
34b04f6 [CBRD-25156] fix common type of String and Null for binary operators -, *, / (#5445)
3c555e5 [CBRD-25156] Let four system parameters take effect during PL/CSQL program execution (#5288, #5368)
1bbc833 [CBRD-25163] Term Change: Procedure Language → Procedural Language (#6074)
0f42a7e [CBRD-25415] Enhance ;server-output [on|off] session command of CSQL (#5430)
c93b615 [CBRD-25477] Prevent precision and scale from being specified for argument types and return types in SP CREATE statements (#5539, #5560, #5568)
d9d0456 [CBRD-25548] get %rowcount from a member variable of a Java object of the cursor (#5506)
d0f359c [CBRD-25672] Update the system to disallow using save functions as default values in table columns or stored procedure/function parameters. (#5610)
0a3df82 [CBRD-25682] keep precision and scale of the numeric type when it is a return type specified by %TYPE (#5628, #5889)
175968e [CBRD-25732] Modify to store java code into /icode folder, as parameter's spec (#5791, #6051)
20f643b [CBRD-25733] Implement functionality to transmit updated PL_CONTEXT system parameter values to the PL server. (#5721)
45abf42 [CBRD-25749] Add [NOT DETERMINISTIC | DETERMINISTIC] Keywords to the CREATE FUNCTION Statement (#5725)
Result Cache and Related Bug Fixes
ffc37ad [CBRD-24046] Result Cache for correlated scalar subquery (#4869, #5387, #5405)
4ae4622 [CBRD-25035] extend query cache to CTE (#4727, #5528)
14eac28 [CBRD-25230] Extending result-cache to uncorrelated subqueries (#4973, #5286)
2c64a1b [CBRD-25395] whether the result-cache is referenced must be indicated in the trace information. (#5283)
ee09410 [CBRD-25473] slip: processing host variable for subquery (#5352, #5425, #5428)
8c72aaf [CBRD-25474] Updated the system to identify unsupported subquery cache patterns and disable caching accordingly. (#5353)
b352b35 [CBRD-25535] Fixed an issue where subquery caching did not work in UPDATE/DELETE queries referencing WITH clauses. (#5434)
8aa9f43 [CBRD-25722] Enable correlated subquery caching with type_sp included in the subquery. (#5707)
5ff3c9a [CBRD-25854] Resolved a memory leak that occurred when using DML queries in an environment with 'result-cache' enabled. (#5838)
Java SP and Related Bug Fixes
3091b71 [CBRD-25087] Restart cub_javasp via signal if JNI crashes the process (#4797, #4968)
ca9c2f2 [CBRD-25208] Set java.io.tmpdir according to the CUBRID_TMP in Java SP server (#4917, #5003)
5de0053 [CBRD-25285] Add a new ClassLoader to avoid reloading classes that load JNI in a Java SP Server (#5076)
c249ff0 [CBRD-25298] trim class and method names of the target method (#5104, #5107)
CSQL and Related Bug Fixes
0a1f849 [CBRD-25129] Change CSQL environment variable name (#4846)
5687907 [CBRD-25633] recognize and run CSQL session commands in string literals, comments, identifiers, and PL/CSQL SP body. (#5559)
unloaddb, loaddb and Related Bug Fixes
a54c726 [CBRD-25064] change to return success when performing execute standalone's loaddb with zero-sized object files. (#4988, #4958)
2983ebf [CBRD-25207] count(*) value is incorrect after no-logging option loaddb (#4908)
181c496 [CBRD-25289] When using the --split-schema-files option in unloaddb, the unique index must be separated from the dbname_schema_class file. (#5083)
1b9054b [CBRD-25300] When unloaddb, the comment of reverse unique index is missing. (#5121)
ff774b1 [CBRD-25360] An issue where the serial value is not unloaded when auto_increment exists in the table. (#5201, #5210)
9aafefb [CBRD-25363] Issue of creating an unnecessarily empty db_name_schema_uk file when performing unloaddb (#5213)
baeefb2 [CBRD-25419] If you use the -i and --input-class-only options together in unloaddb, unrelated alter serial statements will be output. (#5254)
8a08659 [CBRD-25426] If the current_val of serial is the same as max_val, an error occurs during unloaddb/loaddb. (#5260, #5267)
c4676a6 [CBRD-25480] When an error occurs in loaddb, it does not stop and continues execution. (#5356)
eecf199 [CBRD-25481] Corrects an error in unloaddb when the JSON type column contains data larger than 1MB (#5357)
fee9388 [CBRD-25482] When a general user unloads a view, remove the owner's schema from query_spec. (#5360, #5569)
8ca9ac3 [CBRD-25517] Limit the size of the data buffer that can be processed at one time in loaddb to 2GB or less (#5402)
19bebb2 [CBRD-25653] Modify unloaddb to extract other schema information for DBs without tables (including views) (#5583, #5641)
89db307 [CBRD-25737] When unloading serial and trigger as dba user, schema name is missing (#5705, #6037)
cdc9ddd [CBRD-25739] If the target object is a system object, unloaddb removes the target owner of the synonym. (#5712)
21754c7 [CBRD-25744] Fixed an issue where PROCEDURE permission (GRANT ... ON PROCEDURE) granted by another user was output when a DBA member executed unload without the --as-dba option. (#5709)
fe1ad2a [CBRD-25762] When a general user performs a trigger unload, remove [user_schema] from condition and action_definition if the owner is the user themselves. (#5731)
Improve Utilities and Related Bug Fixes
6f28baa [CBRD-24474] The problem that the allocated memory is not freed even when the lock is released (#4894)
716dc6c [CBRD-24741] Provides a way to revive the cub_server process in case of abnormal shutdown (#5464, #5674, #5740, #5527, #5700)
90daad5 [CBRD-25108] Correct misclassifications in the file tracker. (#4829)
0fae147 [CBRD-25311] Dump a specific class by taking class-name argument (#5165)
9356d84 [CBRD-25366] Display execution plan in plandump utility and add function to specific plan cache deletion. (#5206)
0e3f6dd [CBRD-25532] Remove the unnecessary archiving log volume when backupdb (#5432)
a4c5036 [CBRD-25536] add fence key information to SHOW INDEX CAPACITY and diagdb (#5437)
e9ea856 [CBRD-25537] Cubrid_hosts.conf validation of files (#5443)
943cbff [CBRD-26027] Separate worker pool for backup read tasks (#6131)
HA and Related Bug Fixes
2ead70e [CBRD-24738] SQL log files are not automatically deleted when the log ID exceeds UINT_MAX and wraps around to 0. (#5376)
2b93d75 [CBRD-25376] revise error message that may occur when loading ha_node_list and ha_replica_list (#5231)
00ca355 [CBRD-25463] Update db_ha_apply_info periodically when applying logs replicated from slave node (#5328)
575519b [CBRD-25547] Update usage message for -D option in cub_commdb utility (#5465)
d468eda [CBRD-25561] Resolve the issue of applying duplicate changes after restoreslave (#5468)
a449db1 [CBRD-25651] Copy hb_Master_host_name with correct length (#5816, #5660, #5785)
Broker, CAS and Related Bug Fixes
02ebb66 [CBRD-25148] avoid memory leak in ux_execute_array () (#4863)
43848c7 [CBRD-25209] If a transaction is terminated without commit/rollback, write the ABORT log to the ddl_audit log (#4919, #4951)
1dec1c9 [CBRD-25233] When executing multiple statements at once in SetAutocommit(false), there is a commit or rollback statement between the statements (#5006)
9cc996d [CBRD-25344] write SQL LOG ahead and then execute prepare (#5277, #5312)
f328de3 [CBRD-25345] acl entry format validation check (#5562, #5579, #5612)
11863c5 [CBRD-25369] add new broker parameter NET_BUF_SIZE (#5218, #5248)
bfa6a5a [CBRD-25503] Added parameter to set ACL per broker (#5383, #6050)
6c31971 [CBRD-25630] do not create default broker LOG dirs at broker start up (#5556)
aa5a10b [CBRD-25654] Add DB Name to CAS DDL Audit Log File Format (#5586)
986534d [CBRD-25662] show broker LOG dirs in absolute fashion (#5601, #5608, #5633)
e633455 [CBRD-25674] expand broker info to show ADMIN_LOG_FILE (#5617)
CMS(CUBRID Manager Server)
f8cd456 [CBRD-25232] change CMS SSL profile to support up to TLS_v1.2 (#4984, #5019)
a8da584 [CBRD-25295] [CMS] set ppid of broker/cas proc created by cub_manager to 1 (#5101)
50593aa [CBRD-25512] resync, ha_info and getlogfileinfo api (#5533)
Memory Monitoring and Related Bug Fixes
3d16a34 [CBRD-25068] Memory Monitoring Manager module development with memmon utility (#5240, #6095)
9aa564b [CBRD-25377] Enable the 'monitor_waiting_thread' feature regardless of whether the EnableThreadMonitoring macro is defined (#5228, #5470)
Other Bug Fixes
7053840 [CBRD-25086] Add words for the user convenience in user hosts. (#4854)
8de4bcc [CBRD-25243] case-insensitive hostname for CUBRID userhosts (#5008)
a9a184b [CBRD-25331] Remove unnecessary fixing page header for TDE on sort step (#5169)
b85c07b [CBRD-25356] rename att_name in db_serial to attr_name (#5346)
e619b85 [CBRD-25493] Remove messages in languages other than English and Korean (#5433, #5499)
82b99e7 [CBRD-25720] remove table option in the demodb_schema (#5673)
016a5bd [CBRD-26025] Error occurs when sending NULL value to DBLink via JDBC (#6118)
91fc58b [CBRD-26031] When entering Korean characters using bind variables in DBLINK, Korean characters are broken (#6137)
d226dfb [CBRD-25296] Assertion fail on a DATETIMELTZ value to a SP's parameter of DATETIME type (#5099, #5427)
8440da6 [CBRD-25323] Perform the 'Eliminate INNER JOIN' optimization for the first table, and remove the join type for the second table (#5148)
0b90517 [CBRD-25525] Modify cub_vsnprintf() to support vsnprintf() in Windows build (#5409)
11fc8d4 [CBRD-25545] Invalid serial value occurs in unloaddb (#5452)
60927cc [CBRD-25562] Unrelated columns in a method scan's associated table are checked wrongly (#5461)
b6542db [CBRD-25567] Problem with Range Predicates Using Pipe Operators Not Being Reducible to Common Range Terms (#5467, #5477)