High Activity
2
I Use This!

News

Analyzed 6 days ago. based on code collected 6 days ago.
Posted over 1 year ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvement Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 1 year ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvement Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 1 year ago by CUBRID
Today I am excited to announce an updated 9.x branch - CUBRID 9.3.0 has been released. CUBRID 9.3 is the version which stabilized and improved CUBRID 9.2. CUBRID 9.3's DB volume is compatible with 9.2's. CUBRID 9.1 and previous version should ... [More] migrate database. There are a number of new features and performance improvements in 9.3.0 that I will describe below. You can download the latest version of CUBRID 9.3.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=any&cubrid=9.3.0 New Features The new features of CUBRID 9.3.0 are involved with several database aspects : SQL, HA, Administrative Convenience, Utility and Driver. SQL New Features Support SELECT FOR UPDATE Statement The FOR UPDATE clause can be used in SELECT statements for locking rows returned by the statement for a later UPDATE/DELETE. SELECT * FROM t1 INNER JOIN t2 ON t1.i=t2.i ORDER BY 1 FOR UPDATE OF t1, t2; Support Schema Lock The following two locks for schema are added. SCH-S: Schema stability lock. This lock is obtained while query compile is being executed and guarantees that the schema included in the query is not modified by other transactions. SCH-M: Schema modification lock. This lock is obtained while DDL (ALTER/CREATE/DROP) is being executed and prevents the modified schema from being accessed by other transactions. As the schema lock is applied, the deadlock problem which has occurred when multiple DELETEs on the table without indexes were executed is solved. Support various SHOW syntaxes for checking the internal database information Add the SHOW ACCESS STATUS statement The SHOW ACCESS STATUS statement is added to display the login information of the database account. This statement can only be used by a "DBA" account Add the SHOW VOLUME HEADER statement The "SHOW VOLUME HEADER" is added to display the specific volume header's information. Add the SHOW LOG HEADER statement and the SHOW ARCHIVE LOG HEADER statement Add the SHOW HEAP HEADER/CAPICITY statement The "SHOW HEAP HEADER" statement displays the header page of the specified heap. The "SHOW HEAP CAPACITY" statement displays the capacity of the specified heap. Add the SHOW INDEX HEADER/CAPACITY statement The "SHOW INDEX HEADER" statement displays the header page of the specified index. The "SHOW INDEX CAPACITY" statement displays the capacity of the specified index. Add the SHOW SLOTTED PAGE HEADER/SLOTS statement The "SHOW SLOTTED PAGE HEADER OF VOLUME=vol_num AND PAGE=page_num" statement displays the header information of the specified slot page. The "SHOW SLOTTED PAGE SLOTS OF VOLUME=vol_num AND PAGE=page_num" statement displays all slot information of the specified slot page. Support SHA-1, SHA-2, TO_BASE64, and FROM_BASE64 functions. Add SHA-1 and SHA-2 functions Add the TO_BASE64 function and the FROM_BASE64 function. Support the "IF EXISTS" clause for the DROP SERIAL statement. Add a hint, SKIP_UPDATE_NULL to allow a constraint of a certain column from NULL to NOT NULL without data verification. HA New Features CUBRID 9.3.0 contains following improvements in HA environment.  CUBRID allows a broker to connect only to replica Add a parameter that sets the broker to access only to the replica. CSQL can do write operations to slave or replica if it has a special option Add an option to write on the slave DB or the replica DB to CSQL. The statistics information can be updated on the slave node or on the replica node with CSQL. A utility for shrinking the replicating time is added Add a utility to shorten the replication reflection time. Other HA features  Add a functionality to try to reconnect to another node when replication between the CAS and the DB server is delayed. Add a replication latency time to the result of "cubrid statdump". Add the logging functionality for the SQL received by the applylogdb process. Add the functionality which detects a log flush delay caused by a copylogdb delay and writes it on the database server log file.  Improvement of Administrative Convenience Internal status information of SHARD proxy is strengthened The SHARD proxy status information items are added and the number of shard proxy errors can be identified. A number of options are added or changed in the "cubrid broker status" command. A command to test whether the query specified in the DB is successfully executed or not, is added A command to test query execution to the DB and to display whether the execution is successful or has failed has been added. After a query is executed, the transaction is rolled back. If the SHARD is set, query can be executed to all SHARD DBs. With this command, connection status to the DB, user's query permission, and hashing result of the SHARD DB can be checked. Configuration Add the standalone section to cubrid.conf. Add the parameter to define the number of replication-delayed hosts among the hosts defined as db-host in the databases.txt that will try to connect. Utility Add the cubrid_replay utility to replay the SQL log in order to reconfirm the query execution time and query plan. Add the --check-prev-link option and the --repair-prev-link option to the "cubrid checkdb".  Add functionalities of displaying the last connection time by the client with each IP registered in the ACL list of the broker and displaying the number of ACL REJECTs. Add a broker parameter which enables turning off trigger operation and CSQL option. Add the query plan cache information when displaying the "cubrid statdump" command. Add the logging functionality about the result of cubrid utility execution. Drivers [JDBC] Add the functionality to wait without broker connection while a connection object is created. [CCI] Add a function that changes the login timeout value and a function that changes the datasource property. [CCI] Add cci_bind_param_ex(), which can bind even when '\0' exists in the middle of a string. Improvement of Performance SQL Performance Improvment Sampling method is adopted to update the statistics information for shorter UPDATE time. Improve the performance of INSERT operations. Improve the performance of SELECT and SCAN operations by improving page replacement policy of buffer manager. Support loose index scan. Improve the performance of a query which includes aggregate or analytic functions. Improve the performance of a LIKE query. Improve the problem that the INSERT operations take a long time after many DELETE operations. Improve the performance for the insertion of TIMESTAMP type data. Reduce the spent time for generating multiple connections at once. Improve the performance of replicating UPDATE statements. Reduce the spent time for generating indexes in a standalone mode. (--SA-mode) Reduce the spent time for executing many FULL SCAN operations on the same table at the same time. Improve the phenomenon for an application with queries to be relatively slower in Windows than in Linux. Sharding Performance Improvment Improve performance when the statement is reused in the SHARD statement pool. Other Improvments Reduce the time required to create several connections in the application at once.  When a query is executed in an application in the Windows environment, the speed is relatively slower than in the Linux environment. Behavior Changes Some of the functionality in CUBRID 9.3.0 have been changed. SQL Change the operation when the column in the expression of the SELECT list and the alias of the expression are identical with the name of the column of GROUP BY clause. Modify not to create sort merge join execution plan. HA Modify to "reload" only the node information when "cubrid heartbeat reload" command is executed. Add the "cubrid heartbeat replication start/stop " command. Driver [JDBC][CCI] Changed the range of application and the default values of CCI loginTimeout and JDBC connectTimeout. [JDBC][CCI] Modify the system so that queries, that are executed without specifying commit or rollback when the server process is restarted during a transaction or when a failover occurs in the HA environment, are treated as errors. [JDBC] Modify that the JDBC connection object follows the URL's user or password when the user name and the password are entered as "" in the JDBC connection object. Configuration Modify not to apply corresponding broker parameters if the values of broker parameters (LONG_QUERY_TIME and LONG_TRANSACTION_TIME) are 0. Modify the print information and related parameters of the broker access log (ACCESS_LOG) file. The minimum value of log_buffer_size of cubrid.conf is changed from 48KB (3*1page, 16KB=1page) to 2MB (128*1page, 16KB=1page). Utility Displyed values are truncated when "-b" or "-f" option is used in "cubrid broker status" command. Others Replace error messages and utilities messages in Vietnamese and Khmer with that in English. Besides these new features, performance improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.3.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.3.0, please refer to Upgrading to CUBRID 9.3.0. If you have any questions, feel free to leave your comment below. [Less]
Posted almost 2 years ago by newpcraft
We are releasing the heart bleed vulnerability patch of CUBRID Manager Server. You have already seen the news regarding Heart Bleed bug, this vulnerability affecting a lot of web site which are using OpenSSL to provide https protocol. CUBRID Manager ... [More] Server uses OpenSSL in its https api and if you are using on the outside of network zone, it might be taken the vulnerability problem. Because of using OpenSSL 1.0.1c on CUBRID Manager Server to provide https CM API, we highly recommend to patch using this heart bleed vulnerability patch version.  For additional help to patch, visit http://www.cubrid.org/wiki_tools/entry/2014-04-16-cubrid-manager-server-openssl-patch. [Less]
Posted over 2 years ago by Esen Sagynov
Last month we announced CUBRID 8.4.4, the latest version of 8.4.x branch, with new SQL Profiling feature and numerous stability improvements. Today I am excited to announce an update to the 9.x branch - all new CUBRID 9.2.0. Most new features and ... [More] stability improvements of the latest 8.4.4 version have been applied to CUBRID 9.2.0 as well. However, there are several more new features and performance improvements in 9.2.0 that I will describe below. You can download the latest version of CUBRID 9.2.0 for Windows, Linux and AIX from http://www.cubrid.org/?mid=downloads&item=cubrid&os=detect&cubrid=9.2.0. New Features SQL profiling Prior to 8.4.4 and 9.2.0 users could obtain SQL profiling information to analyze the query performance only in desktop GUI applications like CUBRID Manager or CUBRID Query Browser. Now CUBRID allows to retrieve SQL profiling information directly from drivers. To enable the SQL profiling one can execute SET TRACE ON before executing the query, then retrieve the query plan and statistics by executing SHOW TRACE query. See the following example: csql> SET TRACE ON;csql> SELECT /*+ RECOMPILE */ o.host_year, o.host_nation, o.host_city, n.name, SUM(p.gold), SUM(p.silver), SUM(p.bronze)        FROM OLYMPIC o, PARTICIPANT p, NATION n        WHERE o.host_year = p.host_year AND p.nation_code = n.code AND p.gold > 10        GROUP BY o.host_nation;csql> SHOW TRACE;  trace======================  'Query Plan:  SORT (group by)    NESTED LOOPS (inner join)      NESTED LOOPS (inner join)        TABLE SCAN (o)        INDEX SCAN (p.fk_participant_host_year) (key range: (o.host_year=p.host_year))      INDEX SCAN (n.pk_nation_code) (key range: p.nation_code=n.code)  rewritten query: select o.host_year, o.host_nation, o.host_city, n.[name], sum(p.gold), sum(p.silver), sum(p.bronze) from OLYMPIC o, PARTICIPANT p, NATION n where (o.host_year=p.host_year and p.nation_code=n.code and (p.gold> ?:0 )) group by o.host_nationTrace Statistics:  SELECT (time: 1, fetch: 1059, ioread: 2)    SCAN (table: olympic), (heap time: 0, fetch: 26, ioread: 0, readrows: 25, rows: 25)      SCAN (index: participant.fk_participant_host_year), (btree time: 1, fetch: 945, ioread: 2, readkeys: 5, filteredkeys: 5, rows: 916) (lookup time: 0, rows: 38)        SCAN (index: nation.pk_nation_code), (btree time: 0, fetch: 76, ioread: 0, readkeys: 38, filteredkeys: 38, rows: 38) (lookup time: 0, rows: 38)    GROUPBY (time: 0, sort: true, page: 0, ioread: 0, rows: 5) New SQL syntax In CUBRID 9.2.0 we have added new SQL functions and statements. Analytic functions FIRST_VALUE, LAST_VALUE and NTH_VALUE functions Aggregate-analytic functions CUME_DIST, PERCENT_RANK and MEDIAN functions. Support NULLS FIRST, NULLS LAST syntax to the ORDER BY clause. Support DROP VIEW IF EXISTS statement. AIX OS is now supported CUBRID 9.2.0 now supports AIX Unix operating system. Refer to Recommendations for installing CUBRID .sh package in AIX. Improvements In CUBRID 9.2.0 there are over 140 stability and usability improvements which include the following: Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Sort the output of the tranlist command by the specified column. Added an additional event log file to record query status information such as SLOW_QUERY, MANY_IOREADS, LOCK_TIMEOUT, DEADLONG, and TEMP_VOLUME_EXPAND which affect the query performance. cubrid_master log file now includes each node information in the output of HA status. HA Added two new parameters to configure the replication delay interval to teh replica node and specify time for stopping replication. An option to change the failover method in HA environment. Sharding cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Added CONNECT_ORDER broker parameter which allows to specify the order brokers access the DB host when multiple HA/REPLICA DBs are configured. Add a generic_vol_prealloc_size parameter that allows to maintain a certain amount of free space in GENERIC volume to prevent the low performance caused by the sudden increase of a GENERIC volume. Globalization Support Romanian ro_RO locale. Hash partitioning is now available for all collations. Performance The in-memory sort optimization is added to process the query by saving the records that match the ORDER BY ... LIMIT condition to the sort buffer. Query performance improved by applying SORT-LIMIT optimization while executing the ORDER BY ... LIMIT clause in the join query. Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query As a result of these improvements, the performance of SELECT operations in CUBRID 9.2.0 has improved by 23%. Figure 1: Result of SELECT Operation of YCSB Benchmark (Master Server). For more performance and QA results, refer to CUBRID 9.2.0 QA Completion Report. Behavioral changes Some of the functionality in CUBRID 9.2.0 have been changed. SQL When a column without a default value is added by using the ALTER ... ADD COLUMN statement, the PRIMARY KEY or NOT NULL constraint was violated as all values of the added columns became NULL. This problem has been fixed. Globalization CUBRID default data/time format is available when TO_CHAR, TO_DATE, TO_DATETIME, or TO_TIMESTAMP SQL functions are called without specifying the date/time format. The collation and charset of an ENUM type attribute is no longer propagated from its components. HA Master with low priority is changed to slave when split-brain occurs. Sharding The "cubrid shard" command that controls the SHARD is removed; it is now controlled by the "cubrid broker" command. SHARD-related parameters are configured in cubrid_broker.conf instead of shard.conf. Some SHARD-related parameter names are changed. Refer to Changing SHARD-related parameter names. Driver In JDBC code changed the zero date of TIMESTAMP from '0001-01-01 00:00:00' to '1970-01-01 00:00:00'(GST) when the value of zeroDateTimeBehavior in the connection URL is "round". In JDBC and CCI drivers query timeout is now applied to the batch processing function not per query when execution multiple queries at once. Utility Locale should be specified when creating a database. Now the decimal values output by some utilities in Linux and Windows are same. Configurations Changed the time and capacity related parameter names to allow to set time unit or capacity unit next to the time or capacity parameter value. PHRO is removed from the ACCESS_MODE of the broker. Among the system parameters that a user without DBA permission can change dynamically, "client" or the "client/server" parameter can now be changed. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.2.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.2.0, please refer to Upgrading to CUBRID 9.2.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by newpcraft
Last month we announced CUBRID 8.4.4, the latest version of 8.4.x branch, with new SQL Profiling feature and numerous stability improvements. Today I am excited to announce an update to the 9.x branch - all new CUBRID 9.2.0. Most new features and ... [More] stability improvements of the latest 8.4.4 version have been applied to CUBRID 9.2.0 as well. However, there are several more new features and performance improvements in 9.2.0 that I will describe below. You can download the latest version of CUBRID 9.2.0 for Windows and Linux from http://www.cubrid.org/?mid=downloads&item=cubrid&os=detect&cubrid=9.2.0. New Features SQL profiling Prior to 8.4.4 and 9.2.0 users could obtain SQL profiling information to analyze the query performance only in desktop GUI applications like CUBRID Manager or CUBRID Query Browser. Now CUBRID allows to retrieve SQL profiling information directly from drivers. To enable the SQL profiling one can execute SET TRACE ON before executing the query, then retrieve the query plan and statistics by executing SHOW TRACE query. See the following example: csql> SET TRACE ON;csql> SELECT /*+ RECOMPILE */ o.host_year, o.host_nation, o.host_city, n.name, SUM(p.gold), SUM(p.silver), SUM(p.bronze)        FROM OLYMPIC o, PARTICIPANT p, NATION n        WHERE o.host_year = p.host_year AND p.nation_code = n.code AND p.gold > 10        GROUP BY o.host_nation;csql> SHOW TRACE;  trace======================  'Query Plan:  SORT (group by)    NESTED LOOPS (inner join)      NESTED LOOPS (inner join)        TABLE SCAN (o)        INDEX SCAN (p.fk_participant_host_year) (key range: (o.host_year=p.host_year))      INDEX SCAN (n.pk_nation_code) (key range: p.nation_code=n.code)  rewritten query: select o.host_year, o.host_nation, o.host_city, n.[name], sum(p.gold), sum(p.silver), sum(p.bronze) from OLYMPIC o, PARTICIPANT p, NATION n where (o.host_year=p.host_year and p.nation_code=n.code and (p.gold> ?:0 )) group by o.host_nationTrace Statistics:  SELECT (time: 1, fetch: 1059, ioread: 2)    SCAN (table: olympic), (heap time: 0, fetch: 26, ioread: 0, readrows: 25, rows: 25)      SCAN (index: participant.fk_participant_host_year), (btree time: 1, fetch: 945, ioread: 2, readkeys: 5, filteredkeys: 5, rows: 916) (lookup time: 0, rows: 38)        SCAN (index: nation.pk_nation_code), (btree time: 0, fetch: 76, ioread: 0, readkeys: 38, filteredkeys: 38, rows: 38) (lookup time: 0, rows: 38)    GROUPBY (time: 0, sort: true, page: 0, ioread: 0, rows: 5) New SQL syntax In CUBRID 9.2.0 we have added new SQL functions and statements. Analytic functions FIRST_VALUE, LAST_VALUE and NTH_VALUE functions Aggregate-analytic functions CUME_DIST, PERCENT_RANK and MEDIAN functions. Support NULLS FIRST, NULLS LAST syntax to the ORDER BY clause. Support DROP VIEW IF EXISTS statement. Improvements In CUBRID 9.2.0 there are over 140 stability and usability improvements which include the following: Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Sort the output of the tranlist command by the specified column. Added an additional event log file to record query status information such as SLOW_QUERY, MANY_IOREADS, LOCK_TIMEOUT, DEADLONG, and TEMP_VOLUME_EXPAND which affect the query performance. cubrid_master log file now includes each node information in the output of HA status. HA Added two new parameters to configure the replication delay interval to teh replica node and specify time for stopping replication. An option to change the failover method in HA environment. Sharding cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Added CONNECT_ORDER broker parameter which allows to specify the order brokers access the DB host when multiple HA/REPLICA DBs are configured. Add a generic_vol_prealloc_size parameter that allows to maintain a certain amount of free space in GENERIC volume to prevent the low performance caused by the sudden increase of a GENERIC volume. Globalization Support Romanian ro_RO locale. Hash partitioning is now available for all collations. Performance The in-memory sort optimization is added to process the query by saving the records that match the ORDER BY ... LIMIT condition to the sort buffer. Query performance improved by applying SORT-LIMIT optimization while executing the ORDER BY ... LIMIT clause in the join query. Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Fix to use an index when a subquery is given in a START WITH clause as a condition in a hierarchical query As a result of these improvements, the performance of SELECT operations in CUBRID 9.2.0 has improved by 23%. Figure 1: Result of SELECT Operation of YCSB Benchmark (Master Server). For more performance and QA results, refer to CUBRID 9.2.0 QA Completion Report. Behavioral changes Some of the functionality in CUBRID 9.2.0 have been changed. SQL When a column without a default value is added by using the ALTER ... ADD COLUMN statement, the PRIMARY KEY or NOT NULL constraint was violated as all values of the added columns became NULL. This problem has been fixed. Globalization CUBRID default data/time format is available when TO_CHAR, TO_DATE, TO_DATETIME, or TO_TIMESTAMP SQL functions are called without specifying the date/time format. The collation and charset of an ENUM type attribute is no longer propagated from its components. HA Master with low priority is changed to slave when split-brain occurs. Sharding The "cubrid shard" command that controls the SHARD is removed; it is now controlled by the "cubrid broker" command. SHARD-related parameters are configured in cubrid_broker.conf instead of shard.conf. Some SHARD-related parameter names are changed. Refer to Changing SHARD-related parameter names. Driver In JDBC code changed the zero date of TIMESTAMP from '0001-01-01 00:00:00' to '1970-01-01 00:00:00'(GST) when the value of zeroDateTimeBehavior in the connection URL is "round". In JDBC and CCI drivers query timeout is now applied to the batch processing function not per query when execution multiple queries at once. Utility Locale should be specified when creating a database. Now the decimal values output by some utilities in Linux and Windows are same. Configurations Changed the time and capacity related parameter names to allow to set time unit or capacity unit next to the time or capacity parameter value. PHRO is removed from the ACCESS_MODE of the broker. Among the system parameters that a user without DBA permission can change dynamically, "client" or the "client/server" parameter can now be changed. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements in resource management. For the full list refer to CUBRID 9.2.0 Release Notes. If you would like to migrate from previous version to the latest CUBRID 9.2.0, please refer to Upgrading to CUBRID 9.2.0. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by Esen Sagynov
Today we are releasing a new version of CUBRID driver for Nodej.s. node-cubrid 2.1.0 has a few API improvements which aim to provide more convenient APIs with full backward compatibility. However, the main objective of this release is to refactor ... [More] the driver to achieve significant performance improvement by leveraging the characteristics of V8 and Node.js platforms. Continue reading to learn more about the changes. Improvements I will explain the changes chronologically. We have added Tavis Continuous Integration support to node-cubrid project. Now all 268K assertions are automatically performed on Travis servers upon every commit. Check out the latest node-cubrid bulid status at https://travis-ci.org/CUBRID/node-cubrid/builds.Through Travis we can now guarantee that node-cubrid works on all major Node.js releases as well as CUBRID Server releases. This node-cubrid 2.1.0 is even compatible with the latest CUBRID 8.4.4 version we released last week.To install CUBRID on Travis servers we use CUBRID Chef Cookbook.  Besides the Travis CI integration, we have added Coveralls Code Coverage support. Now whenever someone pushes the commit, Coveralls will provide a percentage change in code coverage, whether the code change has made a contribution to code coverage or instead decreased it. Very convenient and encouraging plarform to write more tests. To see the current code coverage status of node-cubrid project, visit https://coveralls.io/r/CUBRID/node-cubrid. At this moment we provide 89% code coverage. Now we exactly know how many tests we need to add more and which lines of the code we need to test. For those users who come from MySQL, we have added alias functions like end() in node-mysql for node-cubrid's close() function. Same goes for createConnection() alias for createCUBRIDConnection(). Now if you migrate to node-cubrid, there is less code you need to change in your application.  Now createConnection() accepts an object of connection parameters. After all JavaScript is all about objects. Connection timeout parameter can now be supplied to createConnection(). query() function now accepts params object which you can use to pass an array of values to bind to ? placeholders in the provided SQL query. _sqlFormat() function in Helpers object, which is used to format an SQL query by replacing ? placeholder with respective bind values, is now smarter. Now numbers are passed to the query as they are without being wrapped in single quotes as if they were strings, though users can wrap them if necessary. If you pass a Date object, it will correctly be converted into CUBRID compatible DATETIME string format which can be stored in DATE, DATETIME, and TIMESTAMP columns. Performance Improvement through Major Code Refactoring As I mentioned at the beginning of this post, the core objective of this release is to refactor the driver to improve the performance of the driver. There are several refactoring works we have performed in this release. Major refactoring of buffer parsers which handle server responses. Major refactoring of protocol packet wrters to optimize the work with the Buffer. Complete replacement of the Queries Queueing logic. Buffer parsers refactoring Prior to this 2.1.0 release, node-cubrid had many duplicate codes. All functions which initiate network communication with the CUBRID Server used to implement almost same functionality to read the data from the socket and prepare it for parsing. Though each function does need a separate logic to parse the buffer data, some functionality can be abstracted like reading bytes from the socket, and performing the basic preparation of the data before it is passed to the parser. There is one more thing we have improved in buffer parsers: it is the work with the instances of Node.js Buffer class. The idea is that memory allocation through Buffer is not as fast as through a local heap of V8 (the JavaScript engine Node.js runs on top of). Moreover, resizing an existing buffer is quite expensive. There is a great inspirational video by Trevor Norris from Mozilla Working with Node.js Buffers and Streams [Youtube] which cover this topic. I highly recommend watching it. Prior to 2.1.0, whenever node-cubrid received a chunk of data from the server, it concatenated this chunk to the main buffer object of this particular request. Since we do not know the potential size of the incoming stream of data, we cannot preallocate enough buffer memory to avoid buffer resizing. This resulted in constant creation, resizing and copying of buffers upon every arrival of the data from the server. In node-cubrid 2.1.0 we have resolved both of these issues: refactored buffer parsers completely to remove any code duplication and improved the work with the Buffer. Now, all functions which initiate network communication use the same API to read data from the socket and prepare it for parsing. To resolve the second issues, we started leveraging the features of CUBRID Communication Protocol. In CUBRID Protocol when a server sends a data packet to a client, the first four bytes (the length of an integer type) represents the length of the incoming data packet. Thus, after receiving the first piece of the data packet, we can learn how many bytes will be necessary to keep the entire packet in a single Buffer instance. Knowing this value, we can create a Buffer instance with enough memory and start reading the remaining data from the pipe into this Buffer instance. This way we avoid buffer resizing completely. Refactoring the protocol packet wrters Just like with Buffer Readers (or Packet Readers) node-cubrid has Buffer Writers which we call Packet Writers. Since the Packet Writers also write into a buffer and send it over the wire, the same rule applies: we needed to optimize how writers work with the Buffer. Unlike with reading data sent by the server, when writing data into the buffer to send it to the server, we know exactly the length of this data. So, why not create the buffer with enough memory in advance? That's what we did. In 2.1.0, we create a Buffer instance only once for a request and write the entire payload into it, thus avoid buffer resizing. Refactoring Queries Queueing logic The third major refactoring affected how queryies queueing work in node-cubrid. We have introduced queries queueing in version 2.0.0. At the time it was implemented via the setTimer() function. Every X period the internal logic would check if there is a query the user wants to run. Obviously this creates three problems for us: one that forces us to manage the queue and check if there is anything in the queue; second there is a potential loss of time in between the queries. Imagine the case when the query A has started in time X and is completed in X + 60, while the timer will check the queue only at X + 100. Why lose these previous 40 units of the time? the third issue is that there is a potential problem when a user can confuse and call the original query()/execute() functions instead of dedicated addQuery()/addNonQuery() queue related functions which would result in an error that tells that another query is already running. To address these issues, we have completely replaced the old queueing logic with a new, more efficient and lightweight one which does not incur any delay. To leverage the new queueing mechanism we had to process all user request, which initiate a network communication with the server, though a queue. Prior to 2.1.0 only those queries which were added by addQuery()/addNonQuery() functions were processed by the queue. Now, everything is processed by the queue even requests to close the query, commit the transaction or fetch more data. By processing all requests by one common queueing mechanism allows us to avoid "another query is already running" errors all together. Since everything goes through the queue, there is no way two requests are run at the same time within one connection. The new queue processes the pending request the moment the previous one is completed. Thus there is no any delay in executing the query. Moreover, this helps us remove the headache of managing and checking the timer. Now the query queueing logic is very efficient. If you check the source of the Queue.js module, you will notice that it's only 48 lines of code including comments and empty lines. Other minor refacroring There are a few other minor refactoring work we have also done. For example, JavaScript provides two very convenient functions like call() and apply() which you can use to alter the reference to the current context of the function. However, if you use it too often, it affects the performance. Previously, in node-cubrid there were quite many usages of these functions. Now we do not call them at all for the sake of better performance. We have also refactored most functions by removing unnecessary and repetitive logic. For the project we have also refactored the test suites by gathering all of them in a single test directory. Soon we will publish the performance test results which will compare the previous 2.0.2 release with this new 2.1.0 release. To see the full list of changes, refer to CHANGELOG.md file. If you have any questions or feature requests, feel free to leave your comments below or create an issue in Github. [Less]
Posted over 2 years ago by Esen Sagynov
On behalf of CUBRID Team I am happy to announce the new 8.4.4 version of CUBRID open source relational database. This release is mostly dedicated for stability improvement of the 8.4 branch, and has some minor behavioral changes which I will explain ... [More] below. Thus, CUBRID 8.4.4 is fully compatible with the previous 8.4.3 version. If you have been following up with our latest releases, you may have noticed that we are maintaining two branches for CUBRID 8.4.x and 9.x. As 8.4.0 release introduced major changes and extended support for MySQL compatible SQL, many users have started using or migrated to it. In fact, there are more 8.4.x users than 9.x at this moment. For this reason, we bring common bug fixes applied to the successor 9.x branch down to 8.4.x branch. This way we make sure users of the 8.4.x branch have the latest improvements. New Features Since this is a stability improvement release, there are no other new features except the SQL profiling which is brought down from the upcoming 9.2 release. SQL profiling Prior to 8.4.4 users could obtain SQL profiling information to analyze the query performance only in desktop GUI applications like CUBRID Manager or CUBRID Query Browser. Now CUBRID allows to retrieve SQL profiling information directly from drivers. To enable the SQL profiling one can execute SET TRACE ON before executing the query, then retrieve the query plan and statistics by executing SHOW TRACE query. See the following example: csql> SET TRACE ON; csql> SELECT /*+ RECOMPILE */ o.host_year, o.host_nation, o.host_city, n.name, SUM(p.gold), SUM(p.silver), SUM(p.bronze)         FROM OLYMPIC o, PARTICIPANT p, NATION n         WHERE o.host_year = p.host_year AND p.nation_code = n.code AND p.gold > 10         GROUP BY o.host_nation; csql> SHOW TRACE;   trace ======================   ' Query Plan:   SORT (group by)     NESTED LOOPS (inner join)       NESTED LOOPS (inner join)         TABLE SCAN (o)         INDEX SCAN (p.fk_participant_host_year) (key range: (o.host_year=p.host_year))       INDEX SCAN (n.pk_nation_code) (key range: p.nation_code=n.code)   rewritten query: select o.host_year, o.host_nation, o.host_city, n.[name], sum(p.gold), sum(p.silver), sum(p.bronze) from OLYMPIC o, PARTICIPANT p, NATION n where (o.host_year=p.host_year and p.nation_code=n.code and (p.gold> ?:0 )) group by o.host_nation Trace Statistics:   SELECT (time: 1, fetch: 1059, ioread: 2)     SCAN (table: olympic), (heap time: 0, fetch: 26, ioread: 0, readrows: 25, rows: 25)       SCAN (index: participant.fk_participant_host_year), (btree time: 1, fetch: 945, ioread: 2, readkeys: 5, filteredkeys: 5, rows: 916) (lookup time: 0, rows: 38)         SCAN (index: nation.pk_nation_code), (btree time: 0, fetch: 76, ioread: 0, readkeys: 38, filteredkeys: 38, rows: 38) (lookup time: 0, rows: 38)     GROUPBY (time: 0, sort: true, page: 0, ioread: 0, rows: 5) Improvements In CUBRID 8.4.4 there are tons of stability and usability improvements which include the following list of improvements of administrative functions. Administrative Convenience One of the major improvement is the SQL profiling which I've already explained above. Added a command line utility to output the parameter information of running brokers or shards. Added tranlist utility to display a list of active transaction throughout all CAS processes. Sort the output of the tranlist command by the specified column. Now killtran utility can also remove transactions by SQL ID. To remove multiple transactions at once -i option of killtran utility can be used. Added an additional event log file to record query status information such as SLOW_QUERY, MANY_IOREADS, LOCK_TIMEOUT, DEADLONG, and TEMP_VOLUME_EXPAND which affect the query performance. cubrid_master log file now includes each node information in the output of HA status. HA An option to change the failover method in HA environment. Sharding Now it's possible to print the shard ID for the shard key in the command line by running cubrid shard getid command. cci_set_db_parameter function can be used in SHARD environment. The password of shard DB can be also specified with an environment variable. Configuration Shard-related processes are started or terminated by using the "cubrid service" command. Added a parameter to adjust the maximum number of replication archive logs. Added a system parameter to specify transaction rollback when lock escalation occurs. Performance Query plan is rewritten when the proper data volume is exceeded during the re-executuion of prepare for the same query statement. Statistical information of only the added index is updated. Reduced time to fork new CAS processes. Behavioral changes Some of the functionality in CUBRID 8.4.4 has been changed. SQL When a column without a default value is added by using the ALTER ... ADD COLUMN statement, the PRIMARY KEY or NOT NULL constraint was violated as all values of the added columns became NULL. This problem has been fixed. Failure to repeat INSERT in the array/batch executive function after executing PREPARE without committing a newly-created table Driver In JDBC code changed the zero date of TIMESTAMP from '0001-01-01 00:00:00' to '1970-01-01 00:00:00'(GST) when the value of zeroDateTimeBehavior in the connection URL is "round". In JDBC and CCI drivers query timeout is now applied to the batch processing function not per query when execution multiple queries at once. Utility Made changes on "cubrid broker status" command. Configurations Changed the time and capacity related parameter names to allow to set time unit or capacity unit next to the time or capacity parameter value. Changed the upper limit of the sort_buffer_size system parameter to 2G. Removed OFF option from KEEP_CONNECTION broker parameter. Changed APPL_SERVER_MAX_SIZE_HARD_LIMIT broker parameter. Changed the default value of SQL_LOG_MAX_SIZE broker parameter from 100MB to 10MB. Other Asynchronous query mode is no longer supported. Besides these improvements and behavioral changes, there are many bug fixes and minor improvements. For the full list refer to CUBRID 8.4.4 Release Notes. What's next In a week or so we will release a new version of 9.x branch which will carry the 9.2 label. We will explain about the new features of 9.2 in a separate post. If you have any questions, feel free to leave your comment below. [Less]
Posted over 2 years ago by Esen Sagynov
We are happy to announce that we have updated our CUBRID PHP and PDO drivers to roll out loads of improvements and bug fixes. The latest releases can be installed from  CUBRID and PDO_CUBRID PECL packages. Below is a list of improvements which ... [More] landed in cubrid-9.1.0.0004 and pdo_cubrid-9.1.0.0003 versions. Connection parameters support. Improved CUBRID database sharding support. Collection data types support. Removed dynamic CUBRID CCI API dependency. Improved LOB data support. Improved documentation. Other minor improvements. Connection parameters support [APIS-580] Now both PHP and PDO drivers support all connection parameters supported by the underlying CCI API. When connecting to a CUBRID Broker, you can pass a list of various options like a list of alternative hosts which can be used either in HA environment to provide seamless failover functionality or in non-HA environment to provide driver level load balancing functionality. These are espectially useful in CUBRID SHARD environment. Here is an example in PHP: $conn = cubrid_connect($host, $port, $db, $user, $password, $createNewLink, "altHosts=192.168.0.2:33000,192.168.0.3:33000&rcTime=600"); Alternatively, connect with a URL: $conn = cubrid_connect_with_url("CUBRID:localhost:33000:demodb:user:password:?login_timeout=100&altHosts=192.168.0.2:33000,192.168.0.3:33000&rcTime=600"); Or in PDO: $db = new PDO("cubrid:dbname=demodb;host=localhost;port=33000", $user, $password, array("altHosts"=>"192.168.0.2:33000","rcTime"=>"600")); Improved CUBRID database sharding support We fixed a bug in PHP driver [APIS-562] which prevented DELETE queries from being executed by cubrid_execute() function in CUBRID SHARD environment. Collection data types support [APIS-555] Now PHP and PDO drivers provide native support for CUBRID collection data types like SET, MULTISET, LIST and SEQUENCE. There are multiple ways to insert an array of values into a collection data type column.  Inserting an array of integers $sql_stmt_insert = "INSERT INTO set_tbl_int VALUES (?);"; $data = array(123,456,789); $stmt = $dbh->prepare($sql_stmt_insert); // Provide the data type of elements as a third parameter. $ret = $stmt->bindParam(1, $data, PDO::PARAM_INT); $ret = $stmt->execute(); Inserting an array of strings To insert an array of strings, set the PDO data type to NULL. This will tell PDO not to perform any conversion. $sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);"; $data = array("abc","def","ghi"); $stmt = $cubrid_pdo->prepare($sql_stmt_insert); // When inserting an array of string, set the data type to NULL. // This will tell PDO not to perform any conversion. $ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL); $ret = $stmt->execute(); Alternatively, setting integer as a PDO data type will work as well. PDO will still keep the values as strings. $sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);"; $data = array("abc","def","ghi"); $stmt = $cubrid_pdo->prepare($sql_stmt_insert); $ret = $stmt->bindParam(1, $data, PDO::PARAM_INT); $ret = $stmt->execute(); The third way to insert an array of string is to specify the CUBRID data type in the fifth parameter as shown below. $sql_stmt_insert = "INSERT INTO set_tbl_str VALUES (?);"; $data = array("abc","def","ghi"); $stmt = $cubrid_pdo->prepare($sql_stmt_insert); $ret = $stmt->bindParam(1, $data, 0, 0, "varchar"); $ret = $stmt->execute(); Notice that PDO::PARAM_ARRAY cannot be used because PDO does not support it. PDO::PARAM_STR also should not be used because PDO will throw an error that an array to string conversion is not allowed. Removed dynamic CUBRID CCI API dependency [APIS-559] Since this release CUBRID PHP and PDO drivers do not have dynamic dependency on CUBRID CCI driver. Instead we now compile PHP and PDO driver together with CCI source code. This allows to install PHP and PDO drivers on environments where CUBRID Server is not installed. This is one more step closer to provide a platform independent PHP and PDO drivers. Improved LOB data support [APIS-556] - We fixed a LOB related bug in cubrid_fetch() function which tried to allocate 4 billion bytes. [APIS-364] - Also fixed a bug which affected Windows users when a user tried to export LOB data from a database which was successfully imported from a fie prior to export. Documentation improvements [APIS-553] - Manual page for cubrid_close_request() should be edited. [APIS-554] - cubrid_connect_with_url() example does not have updated connection url. [APIS-557] - cubrid_lob2_seek64 example does not work properly. [APIS-558] - incorrect documentation. [APIS-584] - Some 'Example' codes about the driver in php.net are somewhat confused. [APIS-596] - The 'test_lob' table which is not created initially may lead some misunderstandings. Other minor improvements [APIS-120] - Return value is not correct when passing a date parameter to cubrid_bind method. [APIS-121] - Return value is not false when passing a invalid time to cubrid_bind method. [APIS-358] - Create table failed when using default timestamp '2038-01-19 12:14:07'. [APIS-513] - CAS error code is not expected in Windows. [APIS-560] - Cannot load PHP API 9.1.0.0003 in CentOS 5.6: undefined symbol: pthread_create in Unknown on line 0. [APIS-583] - The cubrid_get_class_name() function throws a warning if select data from a system table. [APIS-586] - cubrid_bind() doesn't work properly when insert bit data. [APIS-587] - cubrid_bind() doesn't support select bit data from a prepared statement. [APIS-549] - Warnings during PHP/PDO API build via PECL. What's next In the next version we will focus on improving Mac OS X support. The current release was a preparation for this. After removing the dynamic CCI dependency we can easily compile our PHP ad PDO drivers on Mac OS X as well. Stay tuned for further updates! [Less]
Posted over 2 years ago by Esen Sagynov
On behalf of CUBRID open source database project I wanted to take a chance and make a public announcement that we are looking for a Fedora Package Sponsor who would mentor us on submitting CUBRID package to Fedora repository. It has been three years ... [More] since we have created a Review Request at https://bugzilla.redhat.com/show_bug.cgi?id=658754. Recently we have received quite many reviews and now we are at a point when we need a sponsor to move on to the next stage. So, if you know someone or you know someone who knows someone who is a sponsor at Fedora and would be willing to sponsor us, we would appreciate very much if you let us know by commenting on this post. For a reference, Packager sponsor responsibilities states: Packager Sponsors are maintainers that have a good record of maintaining packages, doing reviews and assisting others with the processes and procedures of Fedora. Sponsors act as mentors for new contributors to help point them to areas they would like to contribute, assist them with processes and procedures and assist them when they need general guidance.  [Less]