This page lists breaking changes to NexusDB and other important communications. Please note that not all issues are listed here. If in doubt wether a new release has changes that will impact your projects using NexusDB, always refer to the full list of changes and fixes.
Breaking changes in version 4.70.00:
An error was found in the Keyless Index Engine introduced in v4.60.00, where duplicate keys may be erroneously added if the index was created with Duplicates = idNone. It is recommended that tables containing such indices are packed, restructured or reindexed, to check that duplicates do not remain in the index.
Breaking changes in version 4.50.30:
Any application containing a TnxServerEngine (eg, nxServer, Enterprise Manager, Embedded server applications) will no longer run on Windows XP. TnxServerEngine now uses the Windows API function GetTickCount64, which does not exist under Windows XP.
Breaking changes in version 4.50.28:
Blob Links now used in all TQuery Result Sets by default
To increase processing speed of SQL queries on tables with blobs, the SQL engine now returns blob links (a reference to the internal ID of the original blob) for all queries. Previously, some queries might make a copy of the full blob, increasing processing time, even if the blob was not in the returned field list. Note that this means that if the original blob is changed or deleted after the resultset was created, the change will be reflected when accessing the resultset later. To avoid this, the #B+ query statement switch may be used to force full blob copy, with the aforementioned performance penalty.
Breaking changes in version 4.50.26:
Multithreaded Indexing Feature
An issue has been identified where the Multithreaded Indexing Feature introduced in version 4.50.25 caused the server to stop processing in some circumstances. Version 4.50.25 binaries and source should be replaced with version 4.50.26 or newer to avoid this problem.
Breaking changes in version 4.50.23:
Security Bulletin
An issue has been identified where the web configuration interface of NexusDB Server could be used to access files outside the server specific folders. This update fixes that problem. It is strongly recommended that any NexusDB Server installations be updated to mitigate this issue.
Breaking changes in version 4.50.17:
There is a new TnxStringField type to improve locale handling with AnsiString type. Note that if you require this fix and you are using persistent fields in your Delphi forms, the persistent fields will need to be recreated in order for the correct field type to be used.
When fields are created in SQL using NUMERIC(..., 0) (the scale is zero), the actual type created will now be the smallest integer type that can hold the requested presicion.
Breaking changes in version 4.50.10:
This version featured an incomplete fix for a SQL problem and has been removed. Use version 4.50.11 or newer.
Breaking changes in version 4.50.04:
Compiling nxServer in Delphi 7 may cause an internal compiler error. We strongly recommend that you use a much newer compiler as a number of features are not supported in Delphi 7, including the session statistics introduced in this version.
Breaking changes in version 4.50.02:
An old bug in the SQL engine has been fixed. The engine incorrectly evaluated boolean expressions in some cases. SELECT TRUE AND UNKNOWN, TRUE OR UNKNOWN, FALSE AND UNKNOWN, FALSE OR UNKNOWN FROM #dummy; will now (correctly) return: NULL, TRUE, FALSE, NULL instead of (wrongly, going back to probably NexusDB v1): FALSE, TRUE, FALSE, FALSEBreaking changes in version 4.13.00:
An update has been made to data dictionary verification. An exception is now raised if a table with Referential Links is attempted restructured, and the table contains an RI link that has no actions defined. An RI link without any actions is meaningless; tables that throw this error will need to have the RI link corrected.Breaking changes in version 4.00.14:
There are no breaking source code changes in this version.Breaking changes in version 4.00.13:
There are no breaking source code changes in this version.Breaking changes in version 4.00.12:
There are no breaking source code changes in this version.Breaking changes in version 4.00.11:
NOTE! this version should not be used. A critical error with the nxServer web configuration was discovered shortly after release. Make sure you download and install a later version, including newer binaries. There are no breaking source code changes in this version.A bug has been fixed where using an SQL stored function that returned a table would cause an Access Violation in nxServer. It is strongly recommended to update if you are using such functions.
Breaking changes in version 4.00.08:
There are no breaking source code changes in this version.There is a breaking change in the support DLL interface for the AWE Server. If you are using and updating the AWE Server, you must make sure to update both the nxServer.exe and the nxmm.dll binaries. If this is not done, nxServer will not load the DLL and AWE functionality will be disabled.
Breaking changes in version 4.00.07:
There are no breaking source code changes in this version.There is a potential breaking change in SQL behaviour. When statement-scoped temporary tables (eg #tablename) are used with DISTINCT or GROUP BY, an index is automatically created on the fields involved. Previously, the index was incorrectly created without case sensitivity. The index is now created with case sensitivity. If string fields are involved, this may change the query result from what was previously observed.
Breaking changes in version 4.00.06:
There are no breaking source code changes in this version.Be aware of this C++Builder specific problem: You may receive errors when you try to compile calls to TnxMessageRelayClient::SendMessage or TnxClassFactory::RegisterClass. Due to a conflict with windows api header files, you must use the following procedure in order to compile. The method calls must be wrapped in #undef and #define statements like so:
#undef SendMessage
MsgPlugin->SendMessage(To, nxMsgIDNone, Msg, Data, NULL);
#define SendMessage SendMessageW
Breaking changes in version 4.00.05:
There are no breaking source code changes in this version.Note! An issue has been located in the code for key field comparison code for case insensitive, non-locale shortstring fields in 64bit. This means that on tables that have case insensitive, non-locale indices on short string fields, the find key and range operations can produce unreliable results, delete record operations might fail with key violations, it might be possible to insert duplicates in unique indices and on-disk index data can get corrupted.
It is essential that all tables with potentially affected indices that have been written to with a 64bit server engine are packed with a fixed version of NexusDB as on-disk index data is not reliable.
The 32 bit server (serverengine) is not affected by this issue.
Breaking changes in version 4.00.01:
There are no breaking source code changes in this version.Note: the NexusDB Server's service name has changed to reflect the new major version. You will want to uninstall the v3 service if you have it installed, and install the v4 service.
Note: the NexusDB Server now expects the ADO connector DLL to be named ADOServerConnectorV4.dll. You may rename your existing v3 DLL to make it load in v4.
Breaking changes in version 4:
There are no breaking source code changes in this version.We recommend that you review the entries for the beta versions leading up to this release, if you haven't already done so.
Breaking changes in 3.51.3:
There are no breaking source code changes in this version.We stress that this version is a beta release; at this time we do not recommend that you distribute this version to your customers unless rigorous testing is performed.
Please review these two manis issues, which details an inportant change in the behaviour and speed of the server engine:
Breaking changes in 3.51.2:
There are 2 breaking changes in nxwsBaseWebServer.pas/nxu_PSI_WebServer.pas:This update includes fixes for reported problems. We stress that this version is a beta release; at this time we do not recommend that you distribute this version to your customers unless rigorous testing is performed.
Breaking changes in 3.51.1:
There are no breaking source code changes in this version.This update includes fixes for reported problems. We stress that this version is a beta release; at this time we do not recommend that you distribute this version to your customers unless rigorous testing is performed.
Breaking changes in 3.51:
There are no breaking source code changes in this version.This release introduces full 64-bit support for Client/Server, and removes the address range limitation that existed in 3.5 beta. We stress that this version is a beta release; at this time we do not recommend that you distribute this version to your customers unless rigorous testing is performed.
NOTE! If you want to mix 32 and 64 bit clients and servers, then both clients and servers must be at least version 3.51. Mixing older clients with a 64 bit server is not supported.
There is a change in behaviour for SQL SELECT statements where ORDER BY is performed on columns that either have no locale information, or has no explicit collation specified in the ORDER BY clause. The sorting will now be performed in byte order, instead of using the default locale of the nxServer/ServerEngine. If you have SELECT...ORDER BY statements that fall into this category and you want to sort by a particular locale, make sure you either add locale descriptors, or add explicit collation to the ORDER BY clause.
NOTE! There are several changes to the installer in this version. We strongly recommend that before you run the v3.51 installer, you run your currently installed version's uninstaller, then manually remove any NexusDB paths from your IDE's Library Path.
The Full Source installer now has an "Add source path to Library Path" checkbox which is OFF as default. When it is OFF, the installer creates separate ..\NexusDB3\Library\
The default install directory for new installations is now under the "All Users" directory, this to avoid problems with writing DCUs to the Program Files folder in newer windows versions.
Breaking changes in 3.5:
There are no breaking source code changes in this version.This release introduces 64-bit Embedded support. Full Client/Server support is being worked on.
Breaking changes in 3.12.04:
There are no breaking source code changes in this version. Note that this is a binary only release (no installers).Please note: If you are using the AWE Server/DLL, make sure to update both at the same time.
Breaking changes in 3.12.03:
There are no breaking source code changes in this version.Please note:
Breaking changes in 3.12:
There are no breaking source code changes in this version.Please note: if you start using the new Audit feature, the tables where auditing is activated will not open in older versions.
Breaking changes in 3.11.1:
There are no breaking source code changes in this version.The AWE Server distribution/license method has changed in this version. Please see the "NexusDB Server AWE Edition Setup.pdf" file distributed with the server downloads in order to re-register your product.
Breaking changes in 3.11:
There are no breaking changes in this version.Breaking changes in 3.10.04:
- issue 1366: Running queries when CloseInactiveTables was called could lead to AVs
Before the change for this issue, if there were prepared and bound (but not open) queries that referenced tables when CloseInactiveTables was called, these queries got unbound (releasing all cursors) in the hope that this would drop the cursor count down to 0 and allow the table to be closed. With the change, a prepared and bound query is considered to have the table "in use" and it will not be closed by CloseInactiveTables - DCU Only products require XE2 update 4
When using a DCU only product with Rad Studio XE2, it now requires update 4, due to Embarcadero introducing breaking changes in interfaces.
Breaking changes in 3.10:
- issue 1254: Named Users for the "secure server" logins should be stored in a secure table
Previously, named users for server logins were stored in the nxServer.nxdbworksettings file, and there were no built-in methods for managing the list of users. The server now saves the named users into an encrypted system table, and a new API exists for adding and deleting users. The server will convert the list of users to the new table on the first statup of nxServer v3.10. There is now a default admin login (Administrator / NexusDB) which cannot be deleted, disabled or have its access rights changed. The default password can and should be changed. An example of API usage is included in the installed examples folder. - issue 1092: Setting "secure server" flag will require admin login to be shown
Previously, no authentication was done in the server interface when the "secure server" setting was turned on or off. This is now enforced, requiring an administrator level login in order to sucessfully change the setting. - issue 1170: Declare statements in EXECUTE IMMEDIATE blocks not working
The SQL engine did not not correctly build and manage the local variables list for the dynamic sql block. In fact it also completely violated the SQL standard by not executing the dynamic sql block in it's own context. To fix this issue a new context is now created and initialized which is used to correctly handle declaration and assignment of variables within the dynamic sql block. This though manifests a change in behaviour, because the context isolation means that variables declared in the caller's context are now no longer available to the dynamic sql context. If you're using EXECUTE IMMEDIATE in your solutions we strongly recommend to review your use of variables and do extended testing in this area.
Breaking changes in 3.09:
- issue 920: Widestring field key comparison problem
When a table is restructured in 3.09, table files will contain NLS Version information from the operating system for the used locales, and when opened on a system with different NLS versions for these locales, the system will protect against data corruption, placing the tables in read-only mode until packed. An exception with relevant info is raised by the server and can be trapped by the client to detect this condition.
If you expect your users to move tables between different OSs, your software should contain an update routine to pack all tables (which will regenerate indexes and fix the problem with index data not matching the OS sorting). Use the source generating wizard in the EM to create this code.
NOTE - the internal changes due to this issue means that restructuring tables with 3.09 will render them unable to open in nxServer (serverengine) 3.08 and earlier versions (a workaround to allow going back does exist). Note that 3.08 and older clients can connect to a 3.09 nxServer to work with the 3.09 tables.
Because of localized sorting being different on different version of windows, a serious problem existed when moving tables between different operating systems. FindKey and Locate might not find existing records, SetRange might not include records that should be included, etc.
- TnxBackupController change
NOTE - the TnxBackupController component for Live Backup requires that the client using it has the same version as the server(s) it operates against. A 3.08 client can't make Live Backups on a 3.09 server.
- issue 1091: Usernames and Passwords are transfered as AnsiString without codepage information
NOTE - if a 3.09 client is used to connect to a 3.08 or older nxServer and the server requires username and password for client login, there is a potential for usernames and passwords not to be recognized. IF the usernames or passwords uses characters outside the lower 127 ASCII codes (eg, characters that are specific to a particular codepage), then the 3.08 or older nxServer will not be able to correctly decode the information. Such usernames or passwords must be changed to not use any codepage-specific characters. If nxServer and clients are both 3.09 or newer, then the information is exchanged as UTF-8 encoded text and any characters can be used.
Breaking changes in 3.08:
- issue 846: Clearing filter property on unfiltered TnxTable should not move the current cursor pos
To improve BDE compatibility, the current cusor position will no longer change to the first record if the Filter property is changed on TnxTable\Query with Filtered = False - issue 870: Create starter edition
As a consequence of the required changes the SQL Trigger Monitor component was removed from the server data module and is now instantiated in code. The trigger monitor is now always active in non-starter editions and the UI for it is deprecated and will be removed in one of the next releases.