New DBMS Capabilities
- WITH TRUNCATE modifier added to PRESS TABLE command to reduce the disk space occupied by a table.
- 64К records limit for $$$ATTRI and $$$USR tables canceled to create databases with more columns, indexes, users and privileges.
- A cursor can be passed as a stored procedure parameter.
- Hierarchic exception processing in stored procedures is now available, and exceptions can be used Oracle-style.
- User name can be specified for a global variable.
- MIN, LEAST, GREATEST and USERID functions added to the procedural language.
- Information about exceptions in stored procedures can be displayed on the kernel console or saved in the linter.out file.
- New time zones added for TO_GMTIME/TO_LOCALTIME functions (for compatibility with Oracle).
- A sorting pool over 2 Gb can be used.
- It is allowed to update a query union if each of the unified queries is updatable.
Updates for Specific Platforms
- A new universal distribution build mechanism using parallel build implemented for Windows, UNIX and QNX.
- Build configuration for ARM architectures corrected (LONG_ALIGN macro forcedly used).
- Several modules corrected for normal compilation by gcc 2.95 compiler (the compiler has problems with breaking expressions by conditional compiling directions).
- Location of libraries in directories corrected (in particular, libqsqllinter.so library).
- Distribution content corrected: outdated utilities and unused files no longer included (for UNIX and QNX)
- A new build variation for Windows64 is implemented and being tested (Russian message displaying and incorrect work of some applications corrected).
- Problems with the new Windows network server eliminated.
DBMS Kernel, SQL Compiler, Stored Procedure Compiler and Sorting Procedure Updates
- 32-bit hash (instead of 16-bit) for the kernel page pool implemented.
- BLOB value writing optimized: extra operations eliminated from BLOB value writing and no longer included in the BLOB transaction log; BLOB page duplication during COMMIT prevented.
- Operations with codepages and transfer of codepage information optimized.
- Calculation of sub-queries in SELECT COUNT(*) queries optimized.
- Calculation of SELECT queries with empty sources optimized (if there are such queries and if it is assumed automatically that the query result is empty, this information is output immediately).
- IQ is used instead of BV for the strategy of merging two columns using an index for only one of them (for a very large table). This eliminates the problem of ineffective sparse BV usage.
- Operations with the page pool fastened in case there is only one channel.
- Initial temporary table size limited to avoid long delays when creating a temporary table.
DBMS Behavior Standardization and Unification
- Automatic conversion (string constant to number and numeric constant to string for comparison or assignment in SQL queries) added for compatibility with Oracle.
- NULL parameter processing in string functions of stored procedures corrected (returning a NULL value instead of the BADPARAM exception).
- Procedure call in the VALUES list of the INSERT statement allowed.
- It is allowed to use parameters in the arguments of CONCAT, NEXT_DAY and *TRIM functions and in the IS [NOT] NULL predicate.
- It is allowed to select a NULL value without type conversion in a SELECT query for VIEW (the column type is assumed as INTEGER).
- It is allowed to use a sub-query in the NVL function.
- The use of SYS_GUID() in the GENERATED construction allowed (for BYTE type).
- It is allowed to use a sub-query with FETCH FIRST or ORDER BY in a SELECT list.
- It is allowed to use parameters in grouping expressions.
- It is allowed to omit the third argument in the REPLACE function in SQL queries.
- It is allowed to omit the second argument of the TRUNC SQL function for a date.
- CURRENT VALUE <current value> modifier added to the ALTER SEQUENCE command. Unlike the START/RESTART WITH modifier that sets the current and the initial value of a sequence, the CURRENT VALUE modifier changes only the current value, while the initial value remains the same.
- Alternative behavior of FETCH implemented in stored procedures for the /RESIGNAL_ALL startup key (no “end of selection” exception).
- VIEW buffer size in the SQL compiler increased (from 8 to 16 Kb).
- Global variable names are checked for admissibility; the '#' character is allowed in global variable names.
- It is no longer possible to create stored procedures and triggers on behalf of another user.
- Uniform execution of stored procedures irrespective of the character set they are started in.
- Discrepancies in the behavior of exception processing mechanisms in stored procedures eliminated.
- Multiline /* ... */ comments in stored procedures allowed.
- Page tracing information displayed in case page locking does not allow increasing the channel memory.
- It is not allowed to create an IN-MEMORY table with references to it (which may result in database integrity violation after deleting the table).
- Messages on query processing strategy selection are displayed only in the debug version of the kernel.
- USER pseudo-value operation corrected (this value should always identify the user who submitted the initial query, not the one on whose behalf the current query is executed (if they are different).
- Stored procedure test corrected (a user function name should not match any standard function name (MIN).
- Parameter information in the EXECUTE command pre-translation result corrected (the EXECUTE INTO :VARIABLE PROC() statement translation result should be the same as the SELECT PROC() INTO :VARIABLE result).
- New inter-process exchange interface added.
- Channels are divided to connections and cursors.
- Problem with creating a VIEW containing SELECT from VIEW in the SELECT list corrected.
- WITH TIES construction processing corrected (only after FETCH FIRST, not after LIMIT); conflict between different constructions started with the WITH token resolved.
- CREATE VARIABLE and DROP VARIABLE command syntax verification corrected.
- Processing of expressions containing analytical functions with OVER construction corrected.
- Situation with WITH LOCK in INSERT FROM SELECT without FROM in a sub-query corrected.
- Operation of scalar functions INSTR/POSITION with the second argument (CHAR parameter) corrected.
- Operation of ASCII function for varying length type arguments corrected.
- NEXT_DAY function operation during transition from year to year corrected.
- 64-bit kernel failure during IS NULL predicate processing corrected.
- Column name saving in case of query optimization by opening sub-queries corrected.
- Sub-query opening problem eliminated: if OUTER JOIN connects the same pair of initial sets and the left initial set is a sub-query, its expansion may lead to problems (incorrect JOIN) and therefore is now prohibited.
- Problem with comparison predicate with a sub-query and type conversion corrected.
- Problems with the codepage cache in the sql compiler corrected.
- Processing of queries with sub-queries (in particular, from temporary tables) returning an empty selection corrected.
- If a user function is calculated, the information can be saved and restored.
- Problem of not calculating user functions requiring quantization in some contexts eliminated.
- Omission of user function calculation corrected.
- SQL query execution is no longer interrupted when a user function is called from the query.
- Problem with a query that includes a procedure call returning a cursor corrected.
- Looping eliminated when getting the “end of selection” error code when processing a SELECT query with user function calls.
- Memory leaks and information loss when initiating stored procedure execution corrected.
- Page fill indicators in INSERT FROM SELECT execution corrected.
- TEST TABLE FULL command execution for $$$SYSRL and $$$ATTRI tables corrected (considering that information about temporary tables is not displayed in indexes).
- Situation with BOOLEAN expression (SIMILAR predicate) in SELECT corrected.
- Problem with CASE construction containing a predicate join by OR corrected.
- Problem with schema creation and subsequent deletion corrected.
- Problem of working with multipage character sets in a system channel corrected.
- Problems with creating simple and aggregative indexes for long columns eliminated.
- Incorrect access validation for a client supporting a new query exchange format corrected.
- Additional verifications implemented to avoid situations causing system failures on 64-bit platforms.
- A uniform code for all compilers implemented to avoid incorrect bits in BITMAP.
- Procedure channel state when passing the control to another channel (to execute another procedure or query) corrected.
- Event cursors excluded from verification during kernel shutdown (since their activity is standard). System and other internal cursors excluded from verification for client activity.
- Messages about problems with kernel memory after deleting UNION objects are no longer displayed.
- Incorrect information about AUTOINC RANGE columns (if the byte order of the client and server is different) is no longer displayed.
- Problem with displaying incorrect information after detecting a deleted record in Linter Multiversion eliminated.
- Information conversion corrected for views with different byte order of the client and server.
- Problem with rolling back the insertion of a column with a DEFAULT value corrected.
- COMMIT for an empty transaction is now completed successfully instead of returning an error.
- BLOB value restoration corrected.
- An error in the event processing cycle that disabled some of the events is now corrected.
- A problem in working with sorting channels that could lead to infinite wait for the sorting process by some channels is now resolved.
- Missing verification added to avoid DBMS kernel failure in case file 1.31 is overfilled.
- Incorrect assignment of a page with integrity limitations to a column during table creation eliminated.
- Operation with BLOB in the autocommit mode corrected.
- Alter table modify blobfile command operation corrected.
- Hangup during table restoration from the archive eliminated.
- Failure during compression of a big block in in-kernel backup corrected.
- Extra network server startup during the kernel startup from the DBMS Administrator eliminated.
- Processing of queries applying to rows of the $$$CHAN pseudo-table by rowed corrected.
- Sorting memory size calculation corrected.
- Problems with DBMS kernel failures in all channels in a cycle corrected.
- Situation with Error 1044 during translation of a procedure containing errors corrected.
- Problem with sorting process restart resolved.
- Problem of working with global temporary tables when their number exceeds 8 for one channel eliminated.
- Problem with creating a unique named index for a global temporary table resolved.
- BSON format support problems resolved.
- Recognition of + and – characters in CASE and WHEN in the procedural language added.
- RETURN (NULL); construction processing in the procedural language corrected.
- Kernel failure in Windows when translating a procedure with an undefined exception code eliminated.
- Kernel failure eliminated when the EXCEPTION section contains the WHEN ALL trap followed by RESIGNAL <name>.
- Error in the result assignment statement of the BOOL procedure corrected.
- Kernel failure during the translation of a stored procedure applying to a cursor variable eliminated.
- Problem with stored procedures with TYPEOF(TABLE.FIELD) corrected.
- Logical AND operation in stored procedures corrected.
- Problems with incorrect NULL flag value for a stored procedure result corrected.
- Channel existence verifications during stred procedure execution added to avoid failure.
- Conflict between procedure parameter names and global variables resolved.
- Incorrect processing of UNICODE strings as MAKESTR function arguments corrected.
- Global variable value return error corrected.
- Problem with multiple nested function calls resolved.
- Stored procedure translator failure when translating a procedure with a large number of parameters eliminated.
- Situation with loss of the first 2 bytes of a procedure argument when converting a string to VARBYTE corrected.
- Problem with visibility of objects in a procedure after calling another procedure from it on the originator’s behalf resolved.
- Problem with using global variables in stored procedures resolved.
- Loss of the precision value for integer and real stored procedure parameters eliminated.
Client DBMS Utilities
Database Testing and Restoration Utility (testdb)
- Diagnostics for testing greatly damaged indexes corrected and updated.
- Diagnostics and solution added for the situation when a named single-column index exists while the corresponding column is not marked as indexed.
- Physical testing of all system tables by –ts key added.
- Verification of duplicate references to a page corrected (the existence of a duplicate reference of the same type is now checked).
- Failure during BLOB restoration eliminated.
SQL Query Text Interface (inl)
- Upper case auto-completion implemented.
- The history command now makes it possible to forbid history keeping or to delete the history (hist[ory] on|off|clear); –nohist startup key added.
- Conveyer utility mode for UNIX platforms corrected.
- Completion time output for BLOB commands added.
- DISPLAY VARIABLE command no longer duplicates variables.
- Syntactic parsing of statements split between the input text lines corrected.
- If the client byte order is different from the server byte order, the codepage information is now displayed correctly.
- File processing without the end of page character before the end of file character corrected.
- Problem with execution failure of geodata processing scripts corrected.
- Response output failures in SunOS eliminated.
- If the DBMS kernel response format is incorrect, system failure does not occur.
Data Export to Text Formats (dbstore)
- Query results are now saved in the XML file correctly.
- Problems with the object restoration order corrected.
- Information export corrected for users identified by LDAP, by Kerberos and by PROTOCOL.
- Buffer sizes corrected considering possible recoding to UTF-8.
- Problem with the export of replication rules resolved; replication rule export prohibited in the version that does not support distributed data processing.
- Problems with the export of public sequences and synonyms resolved.
- Problem with codepage name output corrected.
- INITIAL value export for BIGINT autoinc columns corrected.
- Export of tables with more than one BLOB coumn with –j key corrected.
- Export of synonyms with Russian names and synonyms for tables with Russian names corrected.
- Export of integrity constraints for tables with Russian names without –k key corrected.
- Problem with extra double quotes for user names eliminated.
- Problem of not exporting some users of some databases corrected.
- Operation of –ds key corrected, parameter for the key added (-ds number can now be specifiedо).
- Joint operation of –r and –sf keys corrected.
- Operation of –o key variations corrected.
- Help tips for –k key corrected.
Database Administrator Graphic Interface (lindeskx)
- Database schema visual editor functionality enhanced. Automatic numbering of tables and columns corrected. Column uniqueness property saving corrected.
- Procedure argument input fields extended from 150 to 4096 characters, query buffer overfill verifications added, procedure debug buffer increased (to transfer long arguments in the debug mode).
- Deletion of comments from stored procedure source code disabled.
- Query execution time calculation corrected.
- Numeric procedure results are now displayed in a standard way.
- Failures during procedure exception parsing eliminated.
- Failures in Linux during the execution of a large number of queries (including translation of procedures containing errors) eliminated.
- GDI object leaks eliminated.
Database Conversion Utility (Datariver)
- Parameter parsing for automatic initialization added.
- User list reception for Oracle corrected.
- Problem with rereading the object list in case of their modification corrected.
- Connection type corrected.
- Float number reception corrected.
- ESCape character reception corrected.
- Conversion percentage update quickened.
Database Administrator Pseudographic Interface (ldba)
- Stored event support added.
Database Archiving and Restoration Utility (lhb)
- Problem with no return code for the run statement of the scripting language resolved.
Utility for Conversion from Dbf Format (dbf2lin)
- Code refactoring conducted.
- Operation of dbs_tcp for Windows64 corrected (type mismatch no longer leads to looping).
DBMS Program Interfaces
- Problem with incorrect type conversion on the ARMv7 ARMADA XP processor resolved.
- Tests updated.
- IS_NULLABLE column definition for DOTNET_COLUMNS view corrected (should denote that the column value may be omitted).
- DataReader.GetSchemaTable method enhanced for queries retrieving data from several tables.
- Operation with parameters in MultipleCommand corrected (if a command consists of several queries separated by semicolons, each query may contain parameters).
- LinterMigrationSqlGenerator class added to Entity Provider (starting from Entity Framework 6). Functions for creating tables and adding columns to tables implemented.
- Problem with batch processing and stored procedures eliminated (stored procedures should be processed separately, not added to the command batch).
- Problem with sequences eliminated (due to double FETCH, the sequence value was incremented twice).
- Build problem in DBMS Linter 6.0.15 corrected.
- Python library build using the installation script on Linux corrected.
- Django interface updated (auto-setup and new version support added).
- Tests updated.
Perl and Perl-DBI Interfaces
- Perl and Perl-DB interface build corrected using the embedded Perl facilities (perl script and ExtUtils::MakeMaker utility).
- Compatibility with Perl versions earlier than 5.8 provided.
- The system now checks whether an uninitialized variable is used when reading BLOB data in the Perl-DBI interface.
- Incorrect parameter transfer in the BLOB data write/delete function in the Perl-DBI interface.
- A new pre-translated query format is now supported.
- Tests updated.
- Build for Ruby 2.2 implemented.
- Missing constants describing Ruby interface termination codes added.
- Segmentation error and memory leaks in the error processing function corrected.
- Tests updated.
PHP and PHP-PDO Interfaces
- PHP interface build for Linux via the phpize utility corrected.
- PDO build implemented for use both with the MT and non-MT version of PHP.
- PHP failure during the current selection string array generation corrected.
- Warnings no longer displayed during build with LONG_ALIGN macro, since they could lead to incorrect operation of the BIGINT type.
- Linter_GETM function no longer returns an incorrect integer value.
- Problem in PHP-PDO interface resolved (columns with the same name with the PDO::FETCH_LAZY attribute are now processed correctly).
- Problem in PHP-PDO interface resolved (PDOStatement::fetchAll now works with N(VAR)CHAR columns correctly).
- Problem in PHP-PDO interface resolved (linter_handle_last_insert_id() that displays a string containing the last value of the record or sequence ID now operates correctly).
- Column characteristics reception corrected in PHP-PDO for 64-bit Linux (the native_type parameter for a BYTE column should have the string type).
- stdClass object conversion to integer in PHP-PEAR interface corrected.
- Tests updated.
- TCL/TK interface is now correctly built from the distribution if the TCL and TK source files are specified manually during configuration.
- Versions 8.4 and earlier are now supported.
- Operation with parameters during linter_bindpar execution modified, statement options corrected.
- Trim added for values in linter_getdata and linter_getrow.
- List of available cursor and statement options corrected.
- NULL value binding option added.
- A statement can now be executed without parameters.
- Reception of owner/table/column names containing spaces implemented.
- Test package added.
- README updated.
Native High-Level C Interface (LinAPI)
- Analysis of errors returned after procedure execution corrected; incorrect behavior in case of error in a procedure returning a cursor eliminated; incorrect operation with an empty cursor returned from a procedure corrected.
- Processing of cursor oprtions (cStrNumber, cPosNumber, cApiCode) corrected.
Native Call Interface (Intlib)
- Examples for DIRK command corrected (in accordance with the new channel numbering).
- Misprints and non-existent references corrected in the following documents: «Startup and Shutdown in Windows OS Environment», «Startup and Shutdown in UNIX and QNX OS Environment», «DBMS Architecture», «Network Facilities», «SQL Reference», «Extended DBMS Linter Desktop», «Database Archiving and Restoration», «Interactive SQL», «Quick Start».