Patch list for RDM 14.1 14.1.4 29-Mar-2019 Issue Description ----- ---------------------------------------------------------- 1800 Add a separate tool for doing pack file vacuuming 1984 Add ARRAY support for rdm-import 2163 Failing to drop a database should leave the database open 2292 rdm_dbSetOptions with a huge value should return eINVOPTIONVALUE 2424 Allow quoted identifiers 2667 Added correct application entry in Windows Control Panel 2667 Correct uninstall and windows properties for control panel 2667 Fix Windows uninstall and replace icon 2695 psp_threads reorganization 2712 psp code reorganization 2725 generated CPP files renamed 2739 Update pool code to initialize instead of allocate 2748 New AVL tree memory allocator 2801 Add RDM_ASSERT infinite loop implementation for no operating system builds 2804 New mutex and event API 2805 rdm-export erroneously prints out the "COMMIT" message in the JSON catalog file 2806 rdm-regodbc should be able to provide command help w/o admin rights 2808 Introduce RDM_EVAL ASSERT 2810 Calling last_insert_id () in a query causes a segfault 2815 Remove admin functions from Windows menu 2816 Generated catalog has default boolean values toggled 2817 New file API for unbuffered writes 2818 Update base stack implementation 2819 SQLEndTran () returns an error when rolling back a DDL transaction 2820 The BIT column should be translated into RDM_BOOLEAN 2821 SQLDescribeCol () returns incorrect ColumnSize values for certain column types 2822 Add an AVL implementation to the base layer 2823 rdm-import --commit # option does not work 2824 rdm-import- filename for import file cannot have a path 2828 rdm-import- CSV import into a table fails if there are foreign keys 2829 rdm-import cannot recreate database 2836 rdm-yacc should follow our standard error format 2837 Command line parsing should not allocate memory 2840 Create a map implementation that uses an AVL instead of a btree 2841 Add the ability to inserts a row into a specific rowid in the c++ interface 2846 The transport layer should not start a server 2847 errno handling 2849 Remove traces of tfs_standalone 2853 Remove service functionality from the PSP and transport 2857 psp_time refactoring 2860 psp_collate refactoring 2862 psp string refactoring 2870 rdm-import returns eINVNULLARG when no options are specified 2876 rdm-export should escape non-printable characters in output string data 2878 rdm-import needs to be able to process Unicode literals (U&'...') 2879 Update the base linked list B_LL implementation 2881 rdm-import reports a table name instead of column name with a "column not found" error 2883 rdm-export errs out when --force and --append are specified 2887 b_finit () doesn't properly set the file type to CLOSED 2889 rdm-export needs to be able to export ISO-8859 character data as UTF-8 2890 CHAR (xx) in DDL should provide enough space for xx UTF-8 code points 2900 Vacuum Thread should not terminate with a sTIMEOUT 2905 rdm-compile should generate character columns with different multiplier values 2909 Application should be able to specify its own UTF-8 multiplier to insert, update and retrieve data with structs 2910 psp_floatIsNan and psp_floatDoubleIsNan returns for infinity 2923 API to retrieve memory usage with new allocators 2926 b_fgetc should return bytes as positive numbers 2940 Any file that include feature_types.h directly or indirectly need to be included first 2960 Dropping a column constraint doesn't remove column key id 2968 The storage media option isn't correctly handled in SQLSetConnectAttr () 2973 Legacy d_tfsinitW crashes if the second argument is NULL 2975 rdm-export should be able to export data in native data format 2976 rdm-create fails to create a database when locale is specified 2985 Split the API for rdm_dbSetCatalog and rdm_dbSetCalalogFromFile 2989 d_open with multiple databases returns S_DUPUSERID if d_dbuserid () was called to set ID 2990 No extra C++ header files for C-API 2991 API header files included from C++ code 2992 Sprit utf8api.h into utf8_api.h and utf8_types.h 2994 sub allocator now shows memory in use 2995 Master tag should not be NULL when RDM_USE_MALLOC_INSTEAD_OF_TAG is defined 3003 Large transaction reallocate huge buffers 3005 We are not deadlocking when we are supposed to 3006 rdm_cursorUpdateColumn should allow smaller buffers for string types 3007 Dropping a database that does not exist with inmem TFS should return sDBNOTFOUND 3007 Dropping a database that does not exist with inmem TFS should return sNODB 3011 The diskless option for the TFS is taken out 3013 Opening a database with ondisk media with the inmem TFS should return eNOTIMPLEMENTED 3016 Cleanup pspplatos.h 3020 Finding the first valid (i.e. undeleted) row is very inefficient 3025 rdm_cursorMoveToKey and rdm_dbGetRowsByKeyAtKey should allow a shorter string when the key is a single string 3030 rdm-create displays a memory error 3031 Memory leak when setting the catalog and it fails 3032 A DB should be freed when the TFS is freed 3033 d_tfs* functions should be taken out 3036 idindex_find_first_undeleted_slot_disk is inefficient 3039 Memory leak in rdm-convert 3040 rdm-compile segfaults 3041 rdm-compile does not process the final command if it does not have a ';' terminator 3042 rdm-info should fail with no database 3044 rdm-export crashes 3045 rdm-repair does not open the database 3051 Memory leak when starting the tfs where the docroot is already in use 3056 rdm-export only exports the schema 3060 rdm-info does not print out any information 3063 Take out UNICODE support for command line options (current impl. broken), will be added in next patch 14.1.3 15-Oct-2018 Issue Description ----- ---------------------------------------------------------- 2424 Allow quoted identifiers 2568 Connection atrtibute for storage media (RDM_OPT_STORAGE) is missing 2668 fix uninstall option during install 2675 Types header files should not have extern "C" decoration in them 2685 SQLException does not return the native vendor code. 2686 rdm-sql Connecting to an invalid SQL TFS causes an "unexpected empty SQL state" error 2687 Wchar import/export not working 2689 rdm-sql must accept multiple "--connect" and "--database" arguments 2694 ResultSetMetaData.isAutoIncrement () returns false on the ROWID column 2704 getBestRowIdentifier () gets a syntax error 2705 SQLColumns () doesn't return a NUM_PREC_RADIX value for a ROWID column 2706 getColumns () should return NULL for the COLUMN_SIZE for blob types, but it returns -1 now 2707 Trigger A row column with the same name as a target column in insert/update/delete causes a segfault 2709 The REPLACE () SQL function causes a 'data type mismatch' error when a CLOB column is passed in 2711 The concatenation operation ("A" || "B") causes a data type mismatch error 2713 Failure to create a trigger prevents other processes from accessing the system file ("catalog") 2714 Creating a trigger on a non-existent table causes a segfault 2715 The SYS_TRIGGER virtual table fails to return info on a trigger that's not loaded 2716 SELECT COUNT(*) does not properly free the internal RDM cursor 2718 INSERT with expressions including functions can cause memory stomping 2719 rdm-tfs segfaults during the SymmetricDS post-login process 2720 Selecting 2 blob columns causes an assertion failure if the second column returns NULL 2730 rdm-tfs hangs in SQL while a slave is being added 2734 The ROWID scan (dbascan) method can take an excessive amount of time to execute 2735 SQL fails to lock all necessary tables for certain selects 2738 Update/delete needs to lock the referenced (i.e. primary) table 2740 REPLACE () should accept a LONG VARCHAR column as argument 2741 getMoreResults () calls getRowCount () incorrectly 2743 Query using ORDER BY may return empty data from BLOB columns 2744 Calling a global assignment statement twice in a row may cause a segfault 2745 DatabaseMetadata.getColumns () should return the number of bytes (8) for the SQL_ROWID column 2746 DatabaseMetaData.getClientInfoProperties () causes a null pointer exception 2747 DatabaseMetaData storesUppercaseIdentifiers () etc need to return correct values 2749 getString () on a CLOB column gets an extra null byte at the end 2756 rdm_cursorUpdateColumnsByValue () updates CLOB incorrectly 2768 rdm-compile fails to include "rdmrowidtypes.h" when resulting structs include RDM_ROWID_T members 2769 Reinstate the struct and enum names with rdm-compile 2772 Inserting array values may cause an assertion failure 2781 eeeReplace 2309 - The variable 'rc' is being used without being initialized. 2795 correct windows properites for executables 2796 copyright year is fixed with original release date 2798 We should not increment the catalog dbver value 14.1.2 20-Jul-2018 Issue Description ----- ---------------------------------------------------------- 2679 ADO .NET files missing from rdm_enterprise installer package 14.1.1 22-Jun-2018 Issue Description ----- ---------------------------------------------------------- 1503 The runtime does not need to send over items that itself created and then deleted 1504 The runtime should send over information whether the row was created or updated to the TFS 1505 Optimization for b_bt lookup 1506 Optimize ID-index for multiple lookups to the same drawer 1525 For all our internal functions, even though they reside in separate libraries, should not need EXTERNAL_FCN decoration 1872 ResultSetType TYPE_SCROLL_INSENSITIVE not set correctly 2207 SDL files containing embedded spaces generate dbnames and invalid header files 2241 Add pack-related options to SQLSetConnectAttr() 2330 rdm-import does not report the whole path when failing to open an sql file 2369 Add option --lc-struct-members to rdm-compile 2428 Invalid read/write - baseRtree 2463 Two database handles should not shared a connection to the TFS 2464 Data needs to be align in expanded database objects 2470 Altering the catalog where we add an AVL key segfaults 2471 Opening a union of databases segfault 2473 rdm-tfs is leaving a log in the current working directory 2475 rdm_dbOpen need additional open modes 2486 The TFS need to handle retrieval of evicted data from the run-time 2489 rdm_stmtBindParameter() doesn't treat the RSQL_NTS (null-terminated string) marker correctly 2490 rdm_stmtShowPlan() returns eTABNOTFOUND. 2496 Add R-Tree Nearest Neighbor 2500 Our public APIs should not use internal types 2501 Name length is not consistently defined 2502 Query on a virtual table doesn't correctly flag the internals as "virtual." 2503 The byte order mark (BOM) is not handled correctly 2504 The ID-index writes the version number in the wrong endianess on big endian systems 2507 Move some values from _DBO_DISK to the DBOI 2508 UPDATE STATS fails with eNOTLOCKED when there are primary/foreign tables in the database 2509 An SQL insert causes a segfault in TFS 2510 Encryption (sha1) does not handle RDM_MUSTALIGN 2512 psp_*printf() does not print multi-byte UTF8 characters correctly 2515 The ID-index may zap entries causing database corruption 2522 rdm_invalid_db_exception is not used 2523 Namespace for a C++ API should be nested from RDM_CPP 2527 ResultSet w/ static cursor doesn't return the correct column when it's BLOB 2528 Use b_ntoh_u32 and b_hton_u32 instead of platform dependent ID_INDEX_VERSION 2531 Fetching from a table with a BLOB column past the last row segfaults 2532 SQLSpecialColumns() reports an incorrect data type value for SQL_ROWID 2533 psp_sflClose does not handle error codes 2534 psp_inited_get__race_condition_ok - implicit declaration 2537 ‘for’ loop initial declaration not allowed in pre C99 2538 Unsigned integer literals in the range 2G - 4G must be prepended with UL 2540 Remove warnings when RDM_ASSERT is not enabled 2541 timeUTC_VxWorks have the wrong signature 2546 Remove compiler warnings for vxWorks 2549 Query with 'WHERE rowid_col = val' returns 0 rows (with an RDM runtime error) 2552 test crash in pack_write_blocks() 2553 Vacuuming could go into an infinite loop 2554 Default RDM_DEFAULT_MIN_BLOCKS_TO_WRITE should be much larger for embedded platforms 2555 Add RDM_OPT_VACUUM_WAIT as a public option 2556 Remove the SQL_ATTR_RDM_TFS_OPTIONS connection attribute 2557 Add MIN_BLOCKS_TO_WRITE and VACUUM_WAIT to SQL "SET" statement 2560 rutilfcns.c include wchar.h 2562 Use UL instead of LU for unsigned long integer constants 2563 Update SYS_DBINFO virtual table to cover all the database options 2564 dbo_save_init crashes 2568 Connection atrtibute for storage media (RDM_OPT_STORAGE) is missing 2569 Increase the stack size for INTEGRITY 2570 Remove warnigs on INTEGRITY 2571 stmt.getUpdateCount() returns an incorrect value when there's no result 2576 rdm_sqlSetOption () segfaults when the return code is not sOKAY 2583 RDM_OPT_VACUUM_WAIT should not be public 2584 The database we embed should be the one derived from the file name of the sdl file used when running rdm-compile 2587 Failure of row insert when autocommit is enabled doesn't roll back the transaction 2589 Doing repeated lock operations consume more memory 2590 Dropping a table trigger an assertion 2592 Options we set are not retrieved back literally the same as we set them 2596 Assertion in psp_syncExitExcl with RDM_THREAD_NO 2600 Calling a stored procedure whose first statement has a resultset crashes TFS (remote) 2602 rdm_stmtMoreResults() did not handle the "no more results" situation 2606 Increase the heap size on INTEGRITY 2607 Segmentation fault in split_node on INTEGRITY 2609 Assertion inside dbEnd 2611 When the docroot is in use we leak memory 2612 Invalid read/write in the rtree code 2615 psp_queueRead does not handle ePSP_DEADLOCK correctly 2616 Vacuuming does not allocate memory safely 2617 Conditional jump depend on uninitialized value in scalar function where we concatenate the empty string with current date 2619 Conditional jump depend on uninitialized vaiable preparing a statement 2620 Conditional jump depends on uninitialized value in rtree code 2621 Setting IZ next entry when we have a failure is unnecessary 2622 dio_new_item is not handling failure to allocate memory 2626 Enable printing the current time with (rdm-tfs) verbose messages 2627 Vacuuming is not thread safe 2628 The vacuuming thread issues INTEGRITY 2637 The ID-index page cache size should be in the number of bytes, not the number of pages 2638 Many of the configuration option default values are wrong 2639 Delete option min_blocks_to_write 2642 Don't set embedded specific default values 2644 SQL overwrites the TFS settings specified with TFS instantiation 2649 SQL/ODBC update has a runaway memory issue 2656 tcp code should not look at errno unless there is an error 2658 Connection atrtibute for storage media (RDM_OPT_STORAGE) is missing 2658 TFS can crash while shutting down if there are active connections 2609 Crash inside dbEnd