Pervasive.SQL 2000i v7.9 Service Pack 3 Service Pack 4 History of Enhancements and Fixes December 2001 HISTORY. TXT

NEW FEATURES IN SERVICE PACK 3 & 4 are documented in the "What's New" document which is installed as part of your regular install. Please read that document before using your new install of Service Pack 4 so you will be fully aware of changed behaviors.

FIXES IN SERVICE PACK 4

The following is a list of incidents fixed in Pervasive.SQL 2000i v7.9 Service Pack 4 for Server and Workstation products.

If you have access to the Web, visit the Pervasive Web site for the same or

MicroKernel Database Engine (MKDE)

Issue# Description
31776 Users will not be verified if they are in the local PervasiveAdmin group but no PervasiveAdmin exists on the domain server 32571 Create table wizard slow on netware 32490 Under certain there may be incorrect sorting of Zstring keys by ISR code 32491 After accessing ISR based files MKDE may crash during shutdown 32545 Some ISRs missing from COLLATE.CFG 32261 MKDE does not always release exclusive file lock when it should causing status 84 under certain conditions 32823 MKDE causes file corruption with sparse key numbering under heavy load;
file should be rebuilt and no data is lost 32958 Extended Get with 119 filters fails with status 62 33062 Potential file Corruption after a deadlock where multiple clients receive a status 78; rebuild will recover all data/keys in file 33071 MKDE returns 84 on Insert when last record in the linked duplicate chain is locked 33230 Status 2 on read-only open on write-protected removable media 33441 Performing a BUTIL -endbu /A with many active open files could, under certain conditions, cause the engine to abend 33996 Phantom status 43s could be seen when file on disk was not in sync with pages still in memory 33980 Starting continuous operations (on NetWare only) could cause an abend under specific timing conditions 33841 Auto-Stop does not reset the client assigned to ISR handling 33850 Potential GPF in engine if page handling is being done when system runs out of cache 33785 Key may be missing from table if 2 concurrent clients try to add the same key value at the same time and using linked duplicate keys 33548 Status 94 received when Opening a file on a NetWare server if the client attempting to open or create the file was not logged into and authenticated by the NetWare server 33904 Not connecting when DNS name different than server machine name 33774 Poor performance on W9x because of a time() function call 34008 Allow GetEqual to return records when searching on a NULL value 34053 GPFs on GNE if one of the filter cond more than 265 bytes 34073 High stress conditions could cause a conflict when merging shadow pages from memory to disk and cause the engine to GPF 34336 Creating a new file with segmented keys and while using multiple ACSs could cause the file to be incorrectly created 34354 Btrieve Op 65, ExtStat, sub 4, always returns the key number of the current path so if duplicate conflict happens on another path wrong key number is returned 34402 MKDE needs to support v6 files with 'Hidden Data'
34449 NetWare MKDE can abend when merging concurrent ISR key page changes 34568 Optimization issue on Extended Gets with an index with multiple segments 34596 Clear blocking client info after status 84/85 after transaction is completed 34642 GetPrevExt with No-wait lock should return one record with status 84 34713 Creating a file with a bad path name returns status 94 instead of 11 on NW6 34859 Phantom status 2 can be returned on a file after performing concurrent transactions with delete operations where the keys being deleted were on the same parent page 34862 NetWare CPU hog error could be returned if the machine is low on cache and application is very I/O bound 34921 Potential status 5 returned with AUTOINC field if a delete removes the last key value and then the next insert with the same transaction finds the last key value to be lower than the current autoinc value for that file

SQL Relational Database Engine (SRDE)

Issue# Description

30874 Stored Proc inserted 0 into nullable column instead of nulls 31167 Default value being ignored on binary column 31597 Status 49 due to CASE flag set on numeric columns 31943 Insert into 'table' select from 'anothertable' fails for uint 32028 Bookmarks not retrieved if SQLRETRIEVEDATA is SQLRDOFF 32083 Convert char to num fails if '.' used as decimal separator; params in scalar functions do not allow chars for numerical expressions 32094 Stopping the replication engine simultaneously with the WGE may cause a GPF 32128 Stored Proc with 2 returns but only selecting one value is not returning error 32171 Create/drop table is very slow if SSQL engine is running 32225 Running queries across multiple databases in a join would GPF the SRDE 32242 Concurrent identifiers in a query could not exceed 20 32283 No default location for dbnames.cfg file if config file could not be read on NetWare 32287 Enhanced Group/Order by to support aggregates and scalar functions 32314 Error handling in some isolated cases could cause the engine to GPF 32323 Legacy table with index on LOGICAL column not returning correct results 32329 Insert into select from... using distinct ignores distinct 32432 Erroneous status 22 from SQLFetch on static cursor when including a variable length column and optimizing on a predicate 32439 SQLGetInfo(SQLSTATICSENSITIVITY) should not set bit flags for SQLSSADDITIONS, SQLSSDELETIONS and SQLSSUPDATES 32470 SQL connection manager is not always freeing memory when detaching clients 32479 SQLPutData with a length parameter of 0 is setting value to NULL rather than empty string and error is not returned if column is not nullable 32495 GPF of SQLExecDirect() of a positioned update if cursor closed 32498 SRDE returned memory allocation error with a very large view instead of error status code 32513 SQLFetch/SQLExtendeFetch never returns SQLNODATAFOUND when optimizing on multiple ORed or when using an IN 32528 A float value within a range around absolute zero (-DBLEPSILON) should be treated as zero 32533 Btrieve error 11 returned when using static cursor with a select statement that contained an ORDER BY that required a temp table because it had no available index and only if it was a secured database 32568 SRDE does not work with DSN containing spaces on NetWare 32594 Very small memory leak in SQL conn mgr on every ADO conn/disconn 32670 NetWare SRDE unloads when last client is disconnected, and reloads when first connection is made -- it should stay loaded for performance reasons 32675 Stored procedure parser enhanced to support subquery in SET clause and a select with ";" 32717 Executing an invalid alter table that added a new FK would cause all indexes to get out of sync 32764 Optimizer was behaving incorrectly on completely empty tables and could cause a GPF under certain scenarios 32790 Problem with stored procedures where select into a variable is used and the select statement is greater than 250 bytes 32801 Potential problem with numeric arithmetic functions where they could overrun memory by 64K and cause invalid pointer errors 32840 Multiple triggers on the same table would not be fired correctly 32858 Problem with some stored procedures where the rowset size was not getting populated to the call statement correctly resulting in incorrect result set being returned 32932 Setting MKDE to create files in 5x format could cause a crash in ntdbsmgr when adding indexes 32967 Status 8 returned when trying to insert records into an empty file if a select has been performed immediately prior to the insert 32992 SRDE could return status 84 when it should retry before returning status 32998 Calling Stored Procedures with external criteria such as a declared variable or a call parameter variable would cause GPF 33037 Altering a table that would cause the variable portion of the data to be moved could cause a fatal error under certain conditions 33042 Invalid table in trigger statement can potentially causes crash in engine 33131 ODBC connect fails after repeated connect/disconnects and all clients would be reset 33137 Btrieve inserts should be restricted if there is a INSERT trigger on a bound database 33167 Performance problem when filter condition is always false 33205 ALTER TABLE MODIFY is not properly taking LStrings into account 33224 Table join query run through MS Access was not being properly interpreted 33235 ALTER TABLE in dict drop constraint index drops index in Btrieve file and should only drop it from the DDF 33239 Local ODBC application calling SQLBindParameter with last parameter being Null caused fatal error 33249 If SP uses a select but number of columns in return clause is less than number of columns in table SP should return error 33251 Update statement with numerous set clauses where one node was set to NULL could cause the entire statement to fail 33278 Fetching LongVarChar columns in a stored procedure on NetWare could cause an Invalid Cursor State error 33284 Stored Procedure using extended fetch with ArrayFetch turned on returned incorrect results 33285 Triggers incorrectly added under certain conditions where they would work on the first connection after adding, but after connecting/disconnecting they were not reloaded 33303 Stored Procedure engine will crash if extra parameter is passed when calling SP 33403 Create trigger fails if it contains too many lines of logic 33481 Under certain conditions when SQLCBINARY part of a result that required a temp table the result set may fail due to incorrect conversion of binary 33482 Grant CreateTab to a user doesn't grant user full access on all new tables which that user subsequently creates 33488 Parser should allow comments embedded inside all SQL statements 33495 Procedure within a Before Insert Trigger is not being called 33521 Stored Procedure used to insert longvarchar data over 254 chars truncates data 33588 Errors with certain Scalar functions that should be able to return NULL under certain conditions 33595 Abnormally aborting an application during 2 simultaneous operations where 1 is altering table while other is reading, causes server abend on NetWare 33598 Wrong results with LIKE '' and '' combinations 33605 OPTION not returned as keyword in the SQLGetInfo call 33608 Problems optimizing on multi-table joins when using LIKE 33628 SQLBindParameter on a Pseudo-Null column containing an empty string causes incorrect result set 33638 Certain static variables were not thread safe and could cause multiple JDBC applications to return incorrect result sets 33687 Optimizing on an index that is configured for pseudo nulls does not always return correct results 33699 Need to create a temp table for a subquery in more instances than was currently implemented 33708 Static cursor returned no data found in a situation would it should not 33731 Improved the usage of temp tables so that multiple sessions could use same temp table 33734 Able to login to secure DB via group name 33793 Status 49 creating MKDE temp tbls if NOCASE flag on num. cols in DDFs 33798 Aggregates AVG, SUM, MIN, MAX should always report as nullable 33829 Stored Proc engine GPFs when trying to update a non-updateable view within the SP 33835 Memory overrun in stored proc when calling an SP with a variable that is larger than the declared parameter 33900 SRDE GPF when comparing a string 255 in a WHERE clause to a CHAR or VARCHAR column 33910 Complex query that contains multiple tables in a join with static cursors could cause SRDE to GPF under certain conditions 33947 Inconsistent behavior when temp table is required to use an AutoInc column 33950 Data sorted incorrectly if collation sequence applied to column that requires temp table with static cursors 33981 Update within an SP updates only one record if field is indexed 34066 Nested IF clauses within a SELECT in a stored proc could cause GPF 34069 Under very specific condition a SQL Inner Join could cause a GPF 34125 SQLState returned from SP should be SQLError-1 instead of 00000 34134 Syntax error when items in the IN list exceeds 300 34170 Incorrect results returned when the same overlapping segment of a a segmented index is used in multiple predicates for a SELECT 34173 SQLForeignKeys result set not returned in index order 34175 SQLForeignKeys numbers foreign key segments incorrectly 34232 Do not generate NotNull constraints when TRUENULLCREATE is OFF 34256 Too many zeroes displayed on numeric/decimal col w/aggregates 34366 Calling 2nd Stored Proc from a Stored Proc with INOUT variables 2nd SP does not return changed values for variables to calling SP 34367 Stored Proc parameter values are not rebound when parameters change from null to not null 34388 Inconsistent behavior on some datatypes that have been converted from legacy null to pseudo null 34455 Double-byte procedure names can be created but not called 34562 Memory usage in connection list could keep growing when connecting and disconnecting 34567 Lstring datatype columns do not have lenth of default value is set correctly 34593 Static cursor not returning all records in a very isolated case 34549 ANSI join used in a correlated subquery with WHERE EXISTS could cause engine failure 34594 When creating a new index use an existing Btrieve index if one is available of the correct type 34697 Error in ROUND in locales where "," is used as decimal separator 34719 SQLExtendedFetch with a row set size of 1 within a stored procedure can cause incorrect rows to be returned 34787 Error status 1 when updating pre-6.x file formatted file with ODBC 34802 Cannot optimize on a scalar function (left or rtrim) when associated with unique index -- causes incorrrect data to be returned 34803 Using Left or RTrim with IN could cause incorrect results to be returned when incorrect optimization path was chosen by the engine 34868 SQLSetPos(SQLADD) on result set with NUMERIC type column fails 34872 Multi-threaded web application with many connections could cause a engine GPF under heavy load 34901 Incorrect results with IN when using bigint/decimal/double when the values are at max value 34928 Potential problem with a stored procedure where cursors are opened and reused later in the stored procedure 34966 Incorrect results when IF and SUBSTRING are used together with values using a "" 34944 Adding value to a second note field in a legacy formatted table can cause the values in the first note field to be cleared sc17065 SET within a Stored Proc did not work correctly sc18672 Alter Table drop constraint had to be run twice to get the constraint to drop

Engines Communications Components
Issue# Description
32796 Add extra time to retry winsock open in case Winsock is delayed in starting because of system timing or errors 33725 Incorrect handling of status 3006 and 3112 when more data was sent than would fit into read buffer when using Netbios 34225 Not all PARC sessions are getting cleaned up correctly when a number of connected clients are disconnected at once 33218 Thread synchronization problems could occur under heavy load when concurrent connects/disconnects were causing components to be loaded and unloaded 33886 If multiple applications running on the same machine using the WGE were loaded concurrently the writing of their SAT entries in the registry could conflict 32449 Autoload of the WSE under certain conditions would cause the Microkernel Interface (MIF) to use the wrong buffer causing the WSE to GPF 33834 Removed the call that would cause a switch to the NetWare console during the load of NWAIF on NetWare 34376 Thread synchronization problem could cause a hang when connecting and disconnecting a DTO application runnning locally where the engine resides

FIXES IN SERVICE PACK 3

The following is a list of incidents fixed in Pervasive.SQL 2000i v7.9 Service Pack 3 for server and workstation products.

If you have access to the Web, visit the Pervasive Web site for the same or

MicroKernel Database Engine (MKDE)

Issue# Description
sc954 Get Extended operations are not optimizing on segmented keys that is based on the filter. sc13510 Return Status 43, not 2, when GetDirect is issued on a reused page.
23583 Files marked as "Delete Inhibit" on Netware can be overwritten by Create (14) 25094 A disk full error could potentially cause your database engine to GPF if received during an async write.
27531 Gateway Redirection not working correctly if ".." used in a read-
only locator file on Windows 95. 28131 Machines without CLNWIN32 will error when CALWIN32 is loaded. 27623 When the "Max Pages" limit has been reached status 2 will be returned,
then when closing the file the database engine may hang.
27577 The Key Buffer is modified with a Linked Duplicate File during a GET NEXT 27625 Status call with key # FF randomly fails to return file version info 27874 Shares to a subdirectory and multiple shares to the same location could cause status 11s to be returned when accessing files through the WGE locator file.
28392 Status 11 returned when opening gateway locator file that is manually created and not padded to expected length. 28803 Ability to handle local "Get Position" calls within MIF. Added to boost performance as handling it locally is much faster. 28446 Performance improvements for ISR string comparison 29242 Get Next retrieves the wrong record if the key buffer has been modified after an Update.
29359 Get Direct is now invalidating parent stack 29364 Btrieve Operation GetNext (6) failing to return the next record 29318 Engine could hang either starting or stopping continuous operations during heavy activity 30186 Long timeout when trying to connecting to a permanent gateway machine that is not running. 31524 MicroKernel interface will fail if a gateway locator is pointing to the root. 31660 Engine would go to 100 CPU usage when a stop/start BU was issued during certain async IO writes.

Communications
Issue# Description
26778 16-bit Btrieve interface returns active clients for the process only sometimes causing clients to be left open on the server. 27603 Multi-threaded application fails to restart the Micro Kernel Database Engine.
28045 Status 94 trying to connect to local files with Workgroup Engine after a connection to an NT Server Engine.
28276 Requester returns "error 91" when server is Multi-homed.
28331 Slow performance in ODBC when running locally on a NT machine which is a Primary Domain Controller. 28403 Repeatedly opening and quickly closing a file could eventually cause a status 3119 to be returned.
28428 Bdosstub.exe would not load on Windows ME. 29781 BIF not checking for valid Position Block before checking key length.
Returns status 21. 30195 Using Domain user name (DOMAINuser), DTO(and Monitor) will not connect even though domain user is listed in both the Administrator and PervasiveAdmin group of the NT server. 30328 Sped up connect times by not retrying a connect a second time after the first fails. 30359 Sped up connect times by using a SAT entry from a successful connect on a protocol and not trying to resolve other protocols. 30582 Made connections quicker by not waiting for a second protocol to connect when another has already succeeded. Also shortened the timeout on named pipe when machine is not connected to the network. 30686 Bdosstub.exe did not release all memory when /U option was used.

SQL Relational Engine (SRDE)

Issue# Description
20981 Stored Procedures were incorrectly recognizing small identity as an identity and returning an error 21006 Stored Procedures don't return the appropriate values when the return datatype is identity 23271 Column level security does not work correctly with Btrieve owner names 23930 Column level security not behaving correctly 25469 Engine would fail when trying to create a view name 40 26079 Added the ability to use single quotes on a numeric field in a SELECT 26208 Column level privileges not enforced correctly on RO files 26359 Calling CURDATE within MONTHNAME returns no columns 26631 Stored Procedure with numeric data concatenated to string returns the wrong data.
26757 Can't specify NULL on create or alter table 27055 AS Modifier within from clause is not working correctly 27299 CREATE INDEX with more than 18 columns fails w/ illegal dup key 27383 A syntax error is received when calling procedure using DSN.Procedure Name 27383 Stored Procedure call statement did not support DBQ.storedprocname 27619 AS keyword returns an error when used for creating column alias 27650 Insert with a subquery that involves a DB name fails w/syntax error 27875 SRDE should not attempt to optimize on a manual Null key when it encounters one 28026 Updating a longvarbinary to a NULL would cause the engine to fail 28050 Performance issue when performing "Select" queries on large databases with the use of "LIKE.
28331 Performance problem with local databases on NT Primary Domain Controllers 28332 Ordering by a utinyint returned incorrect results 28353 Incorrect results are being returned when using "ORDER BY DESCENDING"
28426 Problems reading correct results from a legacy NOTE datatype 28681 Table is corrupted after altering a table by adding a column to a legacy table that contains a NOTE/LVAR column 28774 Alter table by adding a column with a constraint that uses the same constraint name as the other column fails with 'Illegal duplicate key'
28778 Drop constraint does not delete the name of the constraint from x$field.ddf 28821 Alter table by dropping a primary key column is very slow to return failure 29055 Out of memory errors are received with extremely large result sets 29244 Stored Procedure formatted where it could optionally have included a NOT clause could cause NetWare to abend. 29585 SUM function with "GROUP BY" on two fields does not SUM correctly 29705 Memory Allocation Error on conditional INSERT stmt in the form of:
insert into aa(c1) select c2 from bb where c2 1 and c2 not in(select c4 from cc) 29750 When performing a SQL Select w/ Varchar Data types using If, and concat an ODBC error occurs.
29896 Error would be returned when two columns tried to reference the same ACS 29979 Trying to insert a BLOB 64KB could cause a connection failure 30044 Inconsistent results returned based on some subqueries used with a UNION 30047 Engine could fail if using a column name that was the same as the table name 30172 Trying to create a very large view which should return an error would cause the engine to crash 30193 SRDE improvements for optimization multiple table joins 30243 Optimizing on a Cartesian join caused and assignment error to be returned from incorrect references to indexes across temporary tables used for the optimization 30244 Executing a VB6 RDO program hundreds of times in a row which uses triggers can causes a Memory Allocation Error 30272 Mixing some numeric datatypes as operands in the IF function, could cause the result to be promoted to the incorrect datatype 30466 LIKE returned incorrect results with segmented key referencing the same ACS on legacy datatype 30825 Negative numericsa value displayed as a positive number 30918 If binding more than 255 bytes to a varchar engine should return success with info. 31156 Not treating double quotes correctly for all strings/values in SQL statements. 31240 Running an application with the UNC method, the requester drops the first letter of the path and the status 11 is returned.
31267 Rounding problems when converting some values for printf in stored procedures. 31426 Nested OR or AND in a trigger could cause engine to GPF. 31481 Select on a table with an unsigned tinyint as the primary key will return an error. 31514 Should accept anything non-zero for BIT columns as Boolean true or 1. 31732 RI would get out of sync if child table was dropped and then recreated 31585 Engine very slow connecting to a large database with a lot of tables under the same name. 31767 Single quotes around an unsigned integer would cause an error 31851 #Delete in MS Access 2000 with all char fields with over 200 characters of data - OK with Access 97 31848 Status 7 opening legacy DB w/ security and table privileges

Distributed Tuning Interface (DTI)

Issue# Description
None

Pervasive Control Center (PCC) & SQL Data Manager (SQLDM)

Issue# Description
20213 Adding and removing columns over and over in the add database wizard could cause a GPF in the wizard and also could cause some columns to not be correctly inserted into the table.
20388 SQL statements with a space between the last character and the end of line indicator would cause SQLDM to skip the next line. 22844 Precision of some datatypes is not correctly shown in Table Information Manager.
22911 Cannot stop statement execution if machine runs out of memory reading and caching statement.
23009 Hitting ENTER while editing new table information in the grid causes the wizard to move to the next screen rather than the next field in the grid. 23018 Inconsistent results when entering characters in the middle of an existing data field when using the SQLDM grid.
24232 SQL statement erased if you hit cancel from the save/browse file name window.
24331 PCC was allowing you to register a server name with more than 15 characters, but it was chopping off the characters over 15. 24380 Add ability to view RI constraints on a database to properties. BIT columns showing as unknown in Table Information Manager.
24754 Check database fails if the table has a segmented index on an autoinc field.
25135 Clicking on an empty row and then hitting the delete button would cause the Create Table wizard to fail.
25497 Display problem with char fields in SQLDM. Last character would be cut off, but column display could be resized and display would be correct.
25526 Changing the statement separator to ";" would not take effect in PCC until the tool was stopped and restarted. 25572 Query builder tool did not correctly format INSERT statements.
25806 Adding and removing relations between tables over and over could cause the wizard to fail.
26835 Check DB was failing is there was a CHAR of 254 nullable field. 27025 After one bad index definition was found running Check DB, all subsequent index tests would fail.
27240 Adding and removing data file and dictionary locations in the DBNames config could potentially mess up other DBNames.cfg. 27264 If an index is set on a Btrieve LOGICALTYPE Check DB wizard would return inconsistency errors.
27425 Create Table wizard does not build SQL statements using the same Long Servernames in Novell Networks are being truncated and connect Fails. 30308 If the file location is set to an invalid file the statistics window appears blank and you cannot use that method to correct the incorrect value.
30317 Changing the name of a column that has an index assigned to it would fail.
30476 Indexes are always created in descending order when using the create table wizard.
30665 If you save a query to a file, then open a different file and re-save it, the save will incorrectly be under the first name and it will overwrites your original queries. 31387 When sniffing an existing Btrieve file to create a table the wizard correctly creates the file, but the SQL script displayed in the wizard was sometimes missing the last field.
Monitor Utility
Issue# Description
24879 If file names of greater than 253 characters are open, monitor could GPF when requesting active files or active users screens. 27988 User names with repeated first letter display wrong in monitor.

Gateway Locator Utility
Issue# Description
27821 Problem setting up locator file pointing to remote data access for a local engine when the mapping from the client station is different.

Butil
Issue# Description

26460 Butil -save, Butil -recover, the /j option is not working.
31671 Butil -create to the NetWare root volume would fail with a status 11.

END OF HISTORY.TXT