I added the PDO::ATTR_EMULATE_PREPARES call after connection to the Postgres schema in r3486. Give it a test and make sure that doesn't break anything else (I don't know why it would).
On Sun, Apr 19, 2009 at 6:04 PM, Chris Meller <[email protected]>wrote: > > > On Sun, Apr 19, 2009 at 5:35 PM, Michael Nacos <[email protected]> wrote: > >> Hi everyone >> >> thanks for the quick tips in IRC (DEBUG and DEBUG_ARGS). All the foreach >> warnings magically disappeared with an (array) cast, and I have managed to >> solve an "Indetermineable data type" issue in prepared statements by >> changing all (2) instances of >> >> $pdo->prepare( $query ) >> >> to >> >> $pdo->prepare( $query, array(PDO::ATTR_EMULATE_PREPARES => true) ) >> >> in *system/classes/databaseconnection.php >> * >> [is this something you'd be willing to consider? it basically prepares >> statements at the pdo side, not the db server side, fixing incompatibilities >> when preparing statements for different dbms targets. please have a look at >> these links: >> >> http://drupal.org/node/354139 >> >> http://www.semicomplete.com/blog/geekery/mysql-prepare-queries-not-cached.html >> > > We set this on connect for MySQL in system/schema/mysql/connection.php > (although I don't remember why, since MySQL shouldn't have this kind of > problem). We should probably add that for Postgres as well. > > >> >> Now, the only thing that remains to be fixed for the admin pages when >> using Postgresql seems to be the following error: >> >> Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[42804]: >> Datatype mismatch: 7 ERROR: argument of AND must be type boolean, not type >> integer in system/classes/databaseconnection.php line 288 >> >> system/classes/databaseconnection.php line 288: >> PDOStatement->execute(array ( >> 0 => 1, >> 1 => 2, >> 2 => 1, >> )) >> system/classes/databaseconnection.php line 535: >> DatabaseConnection->query(' >> * SELECT DISTINCT COUNT(1) >> FROM {posts} WHERE ( ({posts}.status = ? AND {posts}.content_type = ? >> AND {posts}.user_id = ?) ) AND ( >> (1) >> ) LIMIT 5*', array ( >> 0 => 1, >> 1 => 2, >> 2 => 1, >> )) >> system/classes/db.php line 293: >> DatabaseConnection->get_value(' >> SELECT DISTINCT COUNT(1) >> FROM {posts} WHERE ( ({posts}.status = ? AND {posts}.content_type = ? >> AND {posts}.user_id = ?) ) AND ( >> (1) >> ) LIMIT 5', array ( >> 0 => 1, >> 1 => 2, >> 2 => 1, >> )) >> system/classes/posts.php line 573: >> DB::get_value(' >> SELECT DISTINCT COUNT(1) >> FROM {posts} WHERE ( ({posts}.status = ? AND {posts}.content_type = ? >> AND {posts}.user_id = ?) ) AND ( >> (1) >> ) LIMIT 5', array ( >> 0 => 1, >> 1 => 2, >> 2 => 1, >> ), 'Post') >> system/classes/adminhandler.php line 397: >> Posts::get(array ( >> 'count' => 1, >> 'content_type' => 2, >> 'status' => 1, >> 'user_id' => 1, >> )) >> system/classes/adminhandler.php line 125: >> AdminHandler->get_dashboard() >> system/classes/actionhandler.php line 68: >> AdminHandler->act_admin() >> system/classes/controller.php line 171: >> ActionHandler->act('admin') >> index.php line 240: >> Controller::dispatch_request() >> >> >> ints need to be cast to boolean if you intend to use them this way... What >> does that *(1)* do there, anyway? >> I'll have another look tomorrow. > > > Is the problem with COUNT(1), or AND (1)? I'm assuming the latter. > > Is it supposed to be AND (1=1)? I know several places we do that when we're > putting together WHERE clauses in pieces so the array containing pieces > always has at least one element... > > All of this is surprising. Neither problem seems to have anything to do > with ACL and would seem to have been an issue previously as well. Those are > the only issues you've run into with trunk on Postgres? Are you sure the > schema got created correctly? Have you tried an upgrade from 0.5 to > 0.6/trunk? > > --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/habari-dev -~----------~----~----~----~------~----~------~--~---
