MDB2_Driver_pgsql
pear.php.net
pgsql MDB2 driver
This is the PostgreSQL MDB2 driver.
Lukas Kahwe Smith
lsmith
smith@pooteeweet.org no
Lorenzo Alberton
quipo
l.alberton@quipo.it yes
Nathan Fredrickson
nrf
nathan@silverorange.com yes
Ali Fazelzadeh
afz
afz@dev-code.com yes
2012-10-23
18:12:26
1.5.0b4
1.5.0b4
beta
beta
BSD License
- Remove assignment by reference, Bug #19585. - PEAR::isError() -> MDB2::isError(), Bug #19491. - PEAR::loadExtension() -> extension_loaded(), Bug #19583. - Fixed boolean type conversion for non-boolean types - Fix Bug #19262. Updates conditional stagements to use logical operators to include MDB2_FETCHMODE_OBJECT where appropriate. Was broken in r321197. - Request #12931 Add cascading to dropTable? - Have truncateTable() return MDB2_OK on success, as documented (bug 19201) - Have vacuum() return MDB2_OK on success, as documented (bug 19196) - Have dropConstraint() return MDB2_OK on success, as documented (bug 19194) - Have createSequence() return MDB2_OK on success, as documented (bug 19192) - Have dropSequence() return MDB2_OK on success, as documented (bug 19191). - Make setOption('result_wrap_class') actually useful by changing the default value of $result_wrap_class parameters from false to true. - Have pgsql only read LOB from file if lob_allow_url_include (bringing it in line with other drivers). - FETCHMODE constants are NOT bitwise. - fixed bug #18203: Type introspection breaks with associative arrays if names are identical (patch by Peter Bex) - fixed bug #17890: Improper use of array_search in prepare function [fletcherj] - fixed bug #17890: Improper use of array_search in prepare function [fletcherj]

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
5.2.0
1.9.1
MDB2
pear.php.net
2.5.0b4
pgsql
1.5.0b4
1.5.0b4
beta
beta
2012-10-23
BSD License
- Remove assignment by reference, Bug #19585. - PEAR::isError() -> MDB2::isError(), Bug #19491. - PEAR::loadExtension() -> extension_loaded(), Bug #19583. - Fixed boolean type conversion for non-boolean types - Fix Bug #19262. Updates conditional stagements to use logical operators to include MDB2_FETCHMODE_OBJECT where appropriate. Was broken in r321197. - Request #12931 Add cascading to dropTable? - Have truncateTable() return MDB2_OK on success, as documented (bug 19201) - Have vacuum() return MDB2_OK on success, as documented (bug 19196) - Have dropConstraint() return MDB2_OK on success, as documented (bug 19194) - Have createSequence() return MDB2_OK on success, as documented (bug 19192) - Have dropSequence() return MDB2_OK on success, as documented (bug 19191). - Make setOption('result_wrap_class') actually useful by changing the default value of $result_wrap_class parameters from false to true. - Have pgsql only read LOB from file if lob_allow_url_include (bringing it in line with other drivers). - FETCHMODE constants are NOT bitwise. - fixed bug #18203: Type introspection breaks with associative arrays if names are identical (patch by Peter Bex) - fixed bug #17890: Improper use of array_search in prepare function [fletcherj] - fixed bug #17890: Improper use of array_search in prepare function [fletcherj]

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.5.0b3
1.5.0b3
beta
beta
2010-08-29
BSD License
- fixed bug #16281: getTableFieldDefinition() does not recognize NULL defaults with datatype [Holger Schletz] - fixed bug #16384: alterTable() does not remove NOT NULL constraints [Holger Schletz] - fixed bug #16405: Compatibility issues with escaped strings [hschletz]

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.5.0b2
1.5.0b2
beta
beta
2009-01-14
BSD License
- fixed bug #12117: disconnect() does not work as documented - fixed bug #13481: getTableConstraintDefinition() may return incomplete results - fixed bug #13877: UNIQUE index not always recognized as constraint - fixed bug #14292: alterTable() cannot change column type when no implicit cast is defined - fixed bug #14510: getTableFieldDefinition() does not unquote defaults - fixed bug #14828: unixtimestamp() generates invalid SQL for non-constant argument - fixed bug #15056: tableInfo does not work with pgsql schemas (added support to table schemas to Manager module)

Thanks to Holger Schletz for all the above patches!

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html Extended Query)
1.5.0b1
1.5.0b1
alpha
alpha
2008-03-15
BSD License
- request #12731: added truncateTable() in the Manager module - request #12732: added vacuum() in the Manager module for OPTIMIZE/VACUUM TABLE abstraction - request #12800: added alterDatabase() in the Manager module - fixed bug #12846: missing escape in getSequenceName() on PostgreSQL 8.2.4 [thanks to Stephane Berthelot] - fixed bug #12920: added new error info and fixed escape method if connection doesn't exist [afz] - fixed bug #12922: use standaloneQuery() in alterDatabase() [afz] - fixed bug #12924: correctly handle internal expected errors even with custom error handling - added standaloneQuery() and databaseExists() - fixed bug #13112: the Reverse module does not know the timestamptz data type - request #13106: added unixtimestamp() in the Function module - fixed bug #13281: list FOREIGN KEY constraints in listTableConstraints() in the Manager module - fixed bug #13356: added float4 to _mapNativeDatatype() - fixed query in getTableConstraintDefinition() for FK constraints in the Reverse module (thanks to Andre' Restivo)

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.5.0a2
1.5.0a2
alpha
alpha
2007-12-06
BSD License
- fixed bug #12376: getTableConstraintDefinition() in the Reverse module uses incorrect column number in certain cases (thanks to Dennis Birne) - request #12338: added 'disable_smart_seqname' option to make improved getSequenceName() behaviour optional (thanks to Dennis Birne) (@see bug #9106) - request #12012: added collation support in createDatabase()

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.5.0a1
1.5.0a1
alpha
alpha
2007-10-28
BSD License
- initial support for FOREIGN KEY and CHECK constraints in the Reverse and Manager modules - fixed bug #10986: Using more random statement names (request #11625) - request #11297: added support for "schema.table" (or "owner.table") notation in the Reverse module (related to bug #11207) - fixed bug #11428: propagate quote() errors with invalid data types - fixed bug in MDB2_Statement_pgsql::_execute(), called property of invalid object - fixed bug #11624: getSequenceName() returning incorrect results with multiple schemas and 'SET search_path' - fixed bug #11652: failed prepared queries containing the "::type" style of casting - fixed bug #11694: remove data type cast from DEFAULT value in getTableFieldDefinition() in the Reverse module - fixed bug #11753: NOTICEs in alterTable() in the Manager module - fixed bug #11790: avoid array_diff() because it has a memory leak in PHP 5.1.x - fixed some E_STRICT errors with PHP5 - fixed bug #12083: createTable() in the Manager module now returns MDB2_OK on success, as documented - fixed bug #12269: tableInfo() in the Reverse module detect 'clob' data type as first option

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.4.1
1.4.1
stable
stable
2007-05-03
BSD License
- return length as "precision,scale" for NUMERIC and DECIMAL fields in mapNativeDatatype() - more accurate field size information in getTableFieldDefinition() in the Reverse module - in getTableIndexDefinition() and getTableConstraintDefinition() in the Reverse module, also return the field position in the index/constraint - Request #9106: more accurate sequence name retrieval routine in getSequenceName() - fixed bug #10895: setLimit() does not work properly when a subquery uses LIMIT

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.4.0
1.4.0
stable
stable
2007-03-13
BSD License
- propagate errors in getTableFieldDefinition() in the Reverse module - implemented getTriggerDefinition() in the Reverse module [experimental] - implemented listTableTriggers() in the Manager module - don't show catalog views in listViews() in the Manager module - implemented a fallback mechanism within getTableIndexDefinition() and getTableConstraintDefinition() in the Reverse module to ignore the 'idxname_format' option and use the index name as provided in case of failure before returning an error - added a 'nativetype_map_callback' option to map native data declarations back to custom data types (thanks to Andrew Hill). - lastInsertID() without parameters now returns the last used ID (request #9989) - phpdoc fixes

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.3.0
2.3.0
stable
stable
2006-11-03
BSD License
- fixed _modifyQuery() for manipulation queries - fixed inheritance structure of convertResult() - added support for new 'disable_iso_date' date DSN option (Request #8739) - added support for getting the table name in tableInfo() - added connection to pg_escape_*() calls - fixed _modifyQuery() for manipulation queries - enable detection of proper size of integers in mapNativeDatatype - migrated to package.xml version 2

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059) - add option to use unnamed prepared statements (see http://www.postgresql.org/docs/current/static/protocol-flow.html "Extended Query")
1.2.2
1.2.2
stable
stable
2006-09-03
BSD License
- flip positions property array in prepared statement objects to make it possible to optionally use the same named placeholder in multiple places inside a single prepared statement

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059)
1.2.1
1.2.1
stable
stable
2006-08-21
BSD License
- return an error if a named placeholder name is used twice inside a single statement - do not list empty contraints and indexes - do not set a default if type is a LOB (Request #8074) - fixed handling return values when disable_query is set in _doQuery() and _execute() - increased MDB2 dependency too 2.2.1

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059)
1.2.0
1.2.0
stable
stable
2006-07-23
BSD License
- performance tweaks for pg_prepare() enabled installations - MDB2_PORTABILITY_RTRIM ignored by driver (Bug #8239) - added ability to escape wildcard characters in escape() and quote() - added setTransactionIsolation() - added savepoint support to beginTransaction(), commit() and rollback() - added debug() call at the end of a query/prepare/execute calling (Request #7933) - added context array parameter to debug() and make use of it whereever sensible - added optional method name parameter to raiseError() and use whereever possible - added ability to escape wildcard characters in escape() and quote() - added debug() call at the end of a query/prepare/execute calling (Request #7933) - added 'nativetype' output to tableInfo() and getTableFieldDefinition() - added 'mdb2type' output to getTableFieldDefinition() - reworked tableInfo() to use a common implementation based on getTableFieldDefinition() when a table name is passed (Bug #8124) - fixed incorrect regex in mapNativeDatatype() (Bug #8256) (thx ioz at ionosfera dot com) - disconnect after changing database/DSN (otherwise transactions may be left open) - use old dsn when rolling back open transactions in disconnect()

open todo items: - enable pg_execute() once issues with bytea column are resolved - use pg_result_error_field() to handle localized error messages (Request #7059)
1.1.0
1.1.0
stable
stable
2006-06-15
BSD License
- added setCharset() - use setCharset() in connect()/_doConnect() - generalized quoteIdentifier() with a property - switched most array_key_exists() calls to !empty() to improve readability and performance - fixed a few edge cases and potential warnings - return error when changing datatypes in alterTable() on pgsql version lower than 8.x (Bug #7731) - added ability to rewrite queries for query(), exec() and prepare() using a debug handler callback - fixed missing error handling in getTableFieldDefinition() (Bug #7791) - pass limit and offset to the result object constructor in _execute() for read statements - use pg_prepare() if available so that we do not need to define the types anymore (Request #7797) - added code to use pg_execute() but disabled due to issues with bytea fields - check if result/connection has not yet been freed/dicsonnected before attempting to free a result set(Bug #7790) - revert change that would prefer 'clob' over 'text' for TEXT fields (this was breaking runtime instrospection)

open todo items: - enable pg_execute() once issues with bytea column are resolved
1.0.3
1.0.3
stable
stable
2006-05-24
BSD License
SECURITY FIX (http://www.postgresql.org/docs/techdocs.50) - use pg_escape_string() - use "'" as the escape character - limit fetch to 1 row in listTableFields()
1.0.2
1.0.2
stable
stable
2006-05-23
BSD License
- added "emulate_prepared" option to force prepared statement emulation - tweaked handling of free() for prepared statements - return error if a prepared statement is attempted to be freed twice - fixed notice when using prepare() without placeholders
1.0.1
1.0.1
stable
stable
2006-05-14
BSD License
- added listTableViews() (request #6773) - explicitly set is_manip parameter to false for transaction debug calls - pass parameter array as debug() all with scope "parameters" in every execute() call (bug #4119) - typo fixes in phpdoc (thx Stoyan) - added support for fixed and variable types for 'text' in declarations, as well as in reverse engineering (Request #1523) - made _doQuery() return a reference - added userinfo's to all raiseError calls that previously had none - calling PREPARE is always a manip query - added 'prepared_statements' supported meta data setting - strip of file:// prefix in writeLOBToFile() - typo fix ressource/resource in LOB array - added missing supported parameter to prepare() signature - properly handle explicit error codes in errorInfo() - moved from OID to TEXT and BYTEA (OID handling was broken, its also deprecated)
1.0.0
1.0.0
stable
stable
2006-02-09
BSD License
- handle null as resource when disable_query option is enabled in result object

open todo items: - considering migrating away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects, however there is no streaming API for bytea columns .. this needs to be done using manually chunked reads/writes
0.2.4
0.2.4
beta
beta
2006-02-05
BSD License
- added support for length in integer and decimal columns - removed ugly hack for quote parameter in quote() since it was insufficient (escaping also needs to be prevented) - added support for out of order parameter binding in prepared queries - reset row_limit and row_offset after calling prepare() just like we do for query() and exec() - cosmetic fix (removed "row_" prefix from "row_limit" and "row_offset") - improved parsing in getServerInfo() (bug #6550)

open todo items: - considering migrating away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects, however there is no streaming API for bytea columns .. this needs to be done using manually chunked reads/writes
0.2.3
0.2.3
beta
beta
2006-01-13
BSD License
- explicitly pass if the module is phptype specific in all loadModule calls (bug #6226) - fixed signature of executeStoredProc() - typo fixes in error handling of nextResult() and numRows() calls - _fixIndexName() now just attempts to remove possible formatting - renamed _isSequenceName() to _fixSequenceName() - _fixSequenceName() now just attempts to remove possible formatting, and only returns a boolean if no formatting was applied when the new "check" parameter is set to true - fixed bug that caused unique indexes from not being seen (bug #6476)

open todo items: - considering migrating away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects, however there is no streaming API for bytea columns .. this needs to be done using manually chunked reads/writes
0.2.2
0.2.2
beta
beta
2005-12-30
BSD License
- types can now always be keyed by name or by order

open todo items: - considering migrating away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects, however there is no streaming API for bytea columns .. this needs to be done using manually chunked reads/writes
0.2.1
0.2.1
beta
beta
2005-12-28
BSD License
- fixed datatype conversion for "time" values - fixed getTableFieldDefinition() default handling (though still a bit shaky) - reverse module: ensure that parameters in queries are properly quoted - fixed bug in alterTable() where "rename" would be skipped if no other alteration is done - do not use multiple commands in ALTER TABLE (only supported since 8.0) - implemented native prepared queries - use proper error code in alterTable() - renamed table as the last step in alterTable() - proper quote new table name in alterTable()

open todo items: - considering migrating away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects, however there is no streaming API for bytea columns .. this needs to be done using manually chunked reads/writes
0.2.0
0.2.0
beta
beta
2005-12-21
BSD License
- do not fix case in listUsers() - unified case fixing in the list*() methods - tweaked text handling in mapNativeDatatype() - use getConnection() to access connection property - split index and constraint handling - quote identifiers where possible inside the manager methods depending on the new 'quote_identifier' option (defaults to off) - refactored get*Declaration() methods to use getTypeDeclaration() - added support for table and column renaming as well as default and nullability changing in alterTable() - setting in_transaction to false on disconnect - added new Function modules to handle difference in SQL functions - force rollback() with open transactions on disconnect - escape floats to make sure they do not contain evil characters (bug #5608) - split off manipulation queries into exec() method from the query() method *BC BREAK* - if result_types is set to false in prepare() method the query will be handled as a DML statement *BC BREAK* - use a proper default value if a field is set to not null in _getDeclaration*() (bug #5930) - added ability to determine unsigned in mapNativeDatatype() (only really implemented in the mysql(i) drivers) (bug #6054) - use MDB2_ERROR_NOT_FOUND in getTableConstraintDefinition() and getTableIndexDefinition() (bug #6055) - added getServerVersion() - unified array structure in mapNativeDatatype() *BC BREAK* - added 'mdbtype' to tableInfo() output that is generated from mapNativeDatatype() - changed 'len' to 'length' in tableInfo() output *BC BREAK*

open todo items: - implement native prepared queries - migrate away from OID's to bytea, since this is encourage since version 8 and is also what PDO expects - testgettablefielddefinition and testnow test cases fail
0.1.1
0.1.1
beta
beta
2005-10-10
BSD License
Warning: this release features numerous BC breaks!

There have been considerable improvements to the datatype, manager and reverse modules. Furthermore preliminary support for auto increment and primary keys has been added. Please note that making a field auto increment implies a single column primary key on this field.

- increased php dependency to 4.3.0 due to the usage of the streams API since beta5 - fixed typo in _getTextDeclaration() - alterTable now needs the full definition to work (use getTableFieldDefinition from Reverse module if you do not have a definition at hand) this eliminates the need of the declaration part in the alterTable array. - fix PHP4.4 breakage - improved error mapping (ported from DB) - better detect if the query returned a result set or not in _doQuery() - minor tweaks to LOB handling - use !empty() instead of isset() in fetchRow to determine if result cols were bound or result types were set - moved all private fetch mode fix methods into _fixResultArrayValues() for performance reasons - renamed MDB2_PORTABILITY_LOWERCASE to MDB2_PORTABILITY_FIX_CASE and use 'field_case' option to determine if to upper- or lowercase (CASE_LOWER/CASE_UPPER) - use array_key_exists() instead of isset() where possible - changed structure of field add/remove/change in alterTable() to match MDB2_Schema - added createIndex() - return 0 for manipulation queries when disable_query is enabled - tweaked getTableFieldDefinition() in reverse module - added getTypeDeclaration() in the datatype module - tweaked field changing in alterTable() - fixed alterTable() signature

open todo items: - implement native prepared queries