No description
  • C 86.5%
  • Python 13.5%
Find a file
2026-09-30 13:40:22 -04:00
lib4d_sql No commit message given. 2026-09-30 13:40:22 -04:00
src/p4d No commit message given. 2026-09-30 13:40:22 -04:00
.gitignore Added some print debugging, added my gitignore 2026-07-16 16:38:51 -04:00
LICENSE Lic update 2026-07-31 10:32:53 -04:00
MANIFEST.in Update for new name, and clean up repository 2014-12-03 09:41:37 -09:00
pyproject.toml This is surely now 2.1 2026-08-05 10:01:47 -04:00
README.md readme update 2026-08-10 11:17:12 -04:00
requirements.txt converting to uv project 2026-07-16 16:45:29 -04:00
setup.py modernized 2026-07-22 13:31:38 -04:00
uv.lock added check to get in fourd 2026-08-05 09:00:12 -04:00

p4d

p4d is a Python Database API 2.0 compliant driver for the 4D (4th Dimension) database server.

Changes

v2.1 2026-07-30:

  • Greatly increased the size of many of the buffers in the interne file so the library no longer hits a buffer overflow when asking for more than 125 columns one can probably pull at least 250 columns at a time now.

v2.0 2026-07-22:

  • The library will no longer error out if given a duration greater than 1 day or negative time. It just passes this as a blank time instead. Is this a good change? ...? I leave this unanswered.
  • Giant rewrite to make the library line up more with how a usual DB API 2 library should look like. Fixed a few bugs in the process. May have let in more.

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