internals:pdo:brainstorming

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
internals:pdo:brainstorming [2009/11/19 22:20] – expanded questions over driver differences lsmithinternals:pdo:brainstorming [2010/01/08 21:11] – external edit 127.0.0.1
Line 12: Line 12:
   * How do we deal with different error handling? Like some RDBMS create throw errors during the prepare stage, others at the first execute.   * How do we deal with different error handling? Like some RDBMS create throw errors during the prepare stage, others at the first execute.
   * How do we deal with different behavior like transaction errors causing a rollback on some RDBMS but not on others.   * How do we deal with different behavior like transaction errors causing a rollback on some RDBMS but not on others.
 +  * How to deal with missing functionality available inside the native extensions? Is the goal to eventually replace the native extensions? Is there any chance to share connections between PDO and the native extensions? 
 +  * How do we handle cross connection transactions? ( 2 phase commit across multiple databases - need to add more information later )
  
 ===== PDO Bugs / PDO2 Improvements ===== ===== PDO Bugs / PDO2 Improvements =====
- 
 ==== PDO ==== ==== PDO ====
 === Documentation === === Documentation ===
Line 21: Line 21:
   * document finally remaining FETCH constants like FETCH_KEY_VALUE, FETCH_FUNC   * document finally remaining FETCH constants like FETCH_KEY_VALUE, FETCH_FUNC
   * better document fetchAll() constants   * better document fetchAll() constants
 +  * add support table for ATTR_FETCH_TABLE_NAMES (sqlite still has a pending patch)
 +  * ATTR_FETCH_CATALOG_NAMES unused?
 +  * FETCH_FUNC should mention it is only allowed with fetchAll
 +  * Mention PDOStatement can be used in foreach, but won't call an overloaded fetch as the internal iterator is used.
  
 === Parameter binding & explicit data type set === === Parameter binding & explicit data type set ===
  
-  * bindValue() & bindParam() should enforce the type giving, currently it uses the current zval type for MySQL Bug #44639 / [[http://news.php.net/php.pdo/234|PDO: Fixing bug #44639 for mysql]]+  * bindValue() & bindParam() should enforce the type giving, currently it uses the current zval type for MySQL Bug [[bugid@44639]] / [[http://news.php.net/php.pdo/234|PDO: Fixing bug #44639 for mysql]]
     * PARAM_INT with strings => it should try to convert to the type, otherwise throw an Exception or create an error.     * PARAM_INT with strings => it should try to convert to the type, otherwise throw an Exception or create an error.
     * PARAM_BOOLEAN with strings => Exception or Error.     * PARAM_BOOLEAN with strings => Exception or Error.
Line 30: Line 34:
   * execute() could use an automatic approach PARAM_AUTO, could be a BC break [[http://news.php.net/php.pdo/235]]   * execute() could use an automatic approach PARAM_AUTO, could be a BC break [[http://news.php.net/php.pdo/235]]
     * allows automatic convert to PARAM_INT if zval is integer / float     * allows automatic convert to PARAM_INT if zval is integer / float
 +  * prepared statement emulation (placeholder rewriting) is fragile, [[bugid@35368|cannot deal well with strings that look like placeholders]] inside quoted strings like "WHERE foo = 'check ?'" or serialized data
 +  * [[bugid@48856|different behavior]] when reusing the same oracle style named placeholder multiple times
  
 === fetchObject === === fetchObject ===
Line 46: Line 52:
 see [[http://news.php.net/php.pdo/268]] see [[http://news.php.net/php.pdo/268]]
  
-For features not yet finalized: +<del>For features not yet finalized: 
-see [[http://news.php.net/php.pdo/286]]+see [[http://news.php.net/php.pdo/286]] PDO_Driver::getNative()::asyncQuery(); </del>
  
-PDO_Driver::getNative()::asyncQuery();+Most drivers allow some kind of async query except MySQL, 
 +additional connections could be created to allow concurrent queries.
  
 +see [[http://news.php.net/php.pdo/330]]
  
 === PDO Persistent Connections === === PDO Persistent Connections ===
Line 70: Line 78:
 see [[http://news.php.net/php.pdo/233]] see [[http://news.php.net/php.pdo/233]]
  
 +=== Transaction ===
 +PDO transaction object
 +see [[http://news.php.net/php.pdo/322]]
 +
 +Possible problems:
 +  * error handling
 +  * nested transaction (emulation)
  
 ===== PDO Binding behaviour (5.3) ===== ===== PDO Binding behaviour (5.3) =====
internals/pdo/brainstorming.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1