Skip to content

ibrewster/p4d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

p4d is a Python Database API 2.0 compliant driver for the 4D (4th Dimension) database server. As such, usage should be familiar to anyone who has used any python database modules before. This module is based off of a C library provided by 4D, and integrated with Python using CFFI. As such, installation of this module does require CFFI.
v1.8 2023-01-13:
 - Fix datatype in C library to properly handle characters >128

v1.7 2017-10-26:
 - Handle decoding of strings from 4D when the string contains corrupted data
 - Change "Binary" data type to subclass of "bytes" rather than subclass of "str"

v1.6.1 2017-10-13:
 - Fix potential issue where memory is freed too soon
 
v1.6 2017-10-12:
 - Don't close the connection when calling close on a cursor
 - Fix some potential buffer overflows when performing queries with many columns

v1.5 2017-10-06:
 - explicitly set cursor.result to none when closing connection to avoid possible double-free issue
 
v1.4 2017-07-21:
 - Add port number as optional parameter to connect call
 - Fix includes in C code needed for proper compilation on some newer OS versions
 
v1.3 2016-10-05:
 - Properly decode integer result fields on python3

v1.2 2016-07-15:
 - Fix bug that could cause strings to become garbage when doing an insert/update with long strings

v1.1 2016-02-19:
 - Fix bug where the inability to prepare a query prevented the query from being run at all.

v1.0 2016-02-11:
 - Enable cursor/connection to work as context managers
 - Wrap all queries in a transaction block

v0.9 2016-02-10:
 - Fix bug that called .decode() on a str object in python 3
 - Add support for "pyformat" style parameter markers
 - Add support for "format" style parameter markers
 - Add support for "named" style parameter markers

v0.8 2015-11-24:
 - Changes for python 3 compatibility

v0.7 2015-09-30:
 - Fix bug with running multiple queries in a row on the same cursor

v0.6 2015-02-17:
 - Fix bug with handling of time values containing milliseconds

v0.5.1 2014-12-23:
 - Improved method of freeing memory used by the fetchone call

v0.5 2014-12-22:
 - Fix remaining memory leak with execute many call. Turns out there were leaks both in the C library as well as in how I was calling the library. Testing now shows memory usage stable at 11MB when processing a 1,000,000 record result set.

v0.4 2014-12-18:
 - Fix memory leak when doing an execute many call (there may still be a small leak with individual executes, depending on how CFFI handles memory)
 - Fix performance issue when performing large executemany queries

v0.3 2014-12-17:
 - improve performance of module when receiving large datasets containing date/time values.
 - Close statement after execution when doing an insert many
 - Fix potential issue when doing large "execute many" queries

v0.2 2014-12-16:
 - Fixed lib4d_sql bug preventing proper paging for some queries
 - Fixed lib4d_sql bug preventing use of "long" queries or argument strings
 - Fixed lib4d_sql bug not preparing the queries on the server before running
 - Changed default pagesize parameter back to 100 since paging should now work

v0.1.1:
 -Inital release