• Welcome to SQLitening Support Forum.

SQLitening Version 1.54 Released (October 23, 2011)

Started by Fred Meier, July 03, 2011, 06:38:08 PM

Previous topic - Next topic

Fred Meier

Scroll to the end of this thread for the latest version of SQLitening v1.54    You must login to see the download links!!!

SQLitening Version 1.50

                     *** Highlights ***
   1. Added slGetDatabaseAndFileNames which will return a list of database
      and file names that are currently opened and attached.

   2. Added slGetFieldDataTypes which will return the data type for each of
      the columns in all the selected rows returned by the passed select

   3. Added slSelBind which allows you to use binary data(Blobs and Unicode)
      in where clauses and it's use will also prevent SQL injection.

   4. Improved when a client process ends to prevent Half-Open connections.

  Below are the details of the changes:

#====================<[ Version 1.5 July 4, 2011 ]>====================
1. ADDED -- command/function called slGetDatabaseAndFileNames which will
    return a list of database and file names that are currently opened and
    attached.  The name entries are returned as a delimited text string which
    is $NUL separated.  Each entry contains two elements, a database name and
    a file name.  The two elements are separated by the vertical bar (|)
    character.  The first entry is always the Main database from the slOpen
    command.  The second entry will be the Temp database, but only if there
    are temporary tables currently created.  The rest of the entries, if any,
    will be the attached databases.  There are no file names assigned to
    temporary tables nor temporary databases. 

2. ADDED -- command/function called slGetFieldDataTypes which will return
    the data type for each of the columns in all the selected rows returned
    by the passed select Statement. The date types of each field for each row
    are returned as comma delimited strings.  Each row will return a stirng
    of numeric values, one value for each column. Will return an empty string
    if an error occurs or no row is selected.  The SQLite data types are:
            1=Integer, 2=Float, 3=Text, 4=Blob, 5=Null.
   If, for example, your select statment returned 3 rows each with 4 columns
   the returning string might be:  3314,3552,3315

3. ADDED -- the slSelBind function. This new command allows you to use binary
    data(Blobs and Unicode) in where clauses and it's use will also prevent SQL

4. IMPROVED -- the optional Where parameter in slBuildInsertOrUpdate
    as follows: If the Where value is omitted or is an empty string ("")
    then will build an Insert statement else will build an Update statement.
    When building an Update statement and the Where value is not "*" then a
    Where clause will be appended as " Where " and then the Where value. If
    the Where value is "*" then the Update statement will not have a Where
    clause (Caution: All records in table will be updated!).

5. IMPROVED -- When a client process ends it normally notifies the server
    and the connection is closed.  For unknown reasons this does not happen
    sometimes, resulting in a Half-Open connection.  To assure this is
    trapped, SQLiteningClient was changed to insure a message is sent at
    least every two minutes. If no real message has been sent then a "ImHere"
    message will be sent.  Also changed SQLiteningServer to close a connection
    if no message has been received for three minutes.  This type of
    close will be logged as "WentAway".

6. CHANGED -- the name of ZLib.Dll to SQLiteningZLib.Dll to avoid conflicts
    with other application that also use ZLib, but a different one.  There
    are two freely available, ZLib1.Dll and ZLibWApi.Dll which are normally
    renamed to just ZLib.Dll.  ZLibWApi.Dll has all the functions of ZLib.Dll
    plus the ability to create and read .Zip files.  ZLibWApi.Dll uses standard
    calling conventions while ZLib1.Dll uses the C calling convention therefore
    they are not interchangable.  ZLibWApi.Dll, renamed to SQLiteningZLib.Dll,
    is the one used with SQLiteing.  The prior ZLib.Dll distributed by SQLitening
    should be deleted from your running folders.

7. FIXED -- SQLiteningServerAdmin to ensure that the SQLiteningServer.Cfg
    file exists before attempting to run a tool.

8. FIXED -- bug in SQLitening.  The slGetTables would not retrun the table
    names for the Temp database.

9. FIXED -- bug in SQLiteningServer.  All databases were automatically closed
    when a connection ends.  For speed reasons, no check was made to determine
    if a database was still open.  If a database was explicit closed with slClose
    and the server was under stress (hi use) then an error could occur when
    it was closed the second time.  Changed to check if a database is still
    open before closing when connection ends. 

10.FIXED -- slGetStatus request 1 to properly return the time the lock was set.   

11.FIXED -- the 'f' ModChar in slOpen as follows:     
         f  = Do not enable foreign key support. 
              If 'f' is passed then will send: PRAGMA foreign_keys=Off
              If 'f' is not passed then will send: PRAGMA foreign_keys=On

12.FIXED --  bug in SQLiteningServer. It would sometimes show the connetion
    timed out when it actually was dropped.

13.FIXED --  bug in slSelStr. It would not allow you to use chr$(0) as either
    of the delimiters.

14.REMOVED -- slsGetInsertID but only from the Special API, it will remain
    in the other APIs.  It was not returning the correct values in VB.
    Any of the APIs can use the "Select last_insert_rowid()" which is a
    core SQLite function.

15.DISALLOWED -- slPushSet and slPopSet in Remote mode.  If it was used in
    Remote mode the results were erroneous.

18. Update SQLite3.Dll to the version dated June 29, 2011.

[attachment deleted by admin]

Fred Meier

This post and attachment is to fix the bug in SQLiteningServer.Exe 1.50 which will cause your connection to time-out incorrectly, resulting in a -18 error.

For those you changed their ConnectionTimeOut= entity in the SQLiteningServer.Cfg to either -1 (never time-out) or to multiply the number of minutes by 3600, you will want to change it back.

To implement, stop the current SQLtiening service, copy the new SQLiteningServer.Exe, change the SQLiteningServer.Cfg, and then start the service. 

Fred Meier

This post and attachment is to improve SQLiteningServerAdmin.Exe.  The tool to kill an Active Connection was not working properly.  I also added a new tool which will display the version number of the currently running server.

The attachment also includes a new SQLiteningServer.Exe which will now show the server version number in the Log whenever the service is started.

To implement, stop the current SQLitening service, copy the new SQLiteningServer.Exe and SQLiteningServerAdmin.Exe and then start the service. 

Fred Meier

There was a flaw discovered in SQLiteningClient and a new one is posted here.  You do not have to install it.  The current one works OK but it is sending the ImHere message too often (every 2 seconds rather than 2 minutes).

Fred Meier

There were several problems discovered in SQLiteningClient.Dll and SQLiteningServer.Exe when using multi threads within a process.

1. SQLiteningServer.Exe needed some areas that read/write flat files to be coded as CriticalSections.
2. The ImHere thread in SQLiteningClient.Dll was not being stopped correctly causing memory errors.
3. The TCP socket was not being properly closed in SQLiteningClient.Dll causing memory leaks.

These problems only occur if you are using multi threads within your process. If you do not use threads then there is no reason to apply this update.

Fred Meier

 Several problems were reported/found in SQLiteing.Dll, SQLiteingClient.Dll and SQLiteningServer.Exe.  It is recommended you update SQLiteningServer while updating the two Dll's is optional.

1. Fixed bug in slBuildInsertOrUpdate where a value of only . or - or +
    was incorrectly considered to be numeric.

2. Fixed bug in SQLiteningServer that was not deleting the files in the Temp
    folder if the database was closed using slClose.

3. Fixed bug in SQLiteningServer that was creating unneeded files in the Temp
    folder for smaller select statements.

4. Added a MutEx synchronizing event in SQLiteningClient to prevent the ImHere
    message to be sent while sending/receiving a real message.

5. Fixed bug in SQLiteningClient that was not handling the timer going pas
    midnight in the ImHere routine

6. Fixed bug in SQLiteningServer that was using Word instead of Dword to store
    the timer value.

7. Added version info to the Dll's and Exe so you are able to determine the version
    by viewing the properties.

The below attached zip contains only the files that changed in version 1.54.

Fred Meier

This attach zip contains all the files as of version 1.54.  The previous post zip only contians the changes for version 1.54.

[attachment deleted by admin]