php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #41837 CONSTRAINTS ALL DEFERRED doesnt work in PDO with Postgres
Submitted: 2007-06-28 09:16 UTC Modified: 2007-06-28 11:02 UTC
From: zolv at t-k dot pl Assigned:
Status: Not a bug Package: PDO related
PHP Version: 5.2.3 OS: Linux Gentoo x86_64
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: zolv at t-k dot pl
New email:
PHP Version: OS:

 

 [2007-06-28 09:16 UTC] zolv at t-k dot pl
Description:
------------
when i use PDO with Postgresql and  use  transactions with
'SET CONSTRAINTS ALL DEFERRED' PDO throws exception on inserts that works perfectly when i dont use PDO, but pg_connect and pg_query

Reproduce code:
---------------
example sql:

create table  obiekt_c4 (
    id serial NOT NULL,
    name varchar(255),
    PRIMARY KEY (id)
);


create table  obiekt_a4 (
    id serial NOT NULL,
    name varchar(255),
    obiekt_c4_id integer REFERENCES obiekt_c4( id ) DEFERRABLE,
    PRIMARY KEY (id)
);

----------------------
bellow code showing what i try do do:


$DB = new PDO('pgsql:host=localhost;dbname=atoncd_test', 'atoncd', 'atoncd');
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DB->beginTransaction();
$DB->exec( 'SET CONSTRAINTS ALL DEFERRED' );

$fields = 
	'id, '.
	'name, '.
	'obiekt_c4_id';

$inspoints = 
	':id, '.
	':name, '.
	':obiekt_c4_id';

$q = sprintf( 'INSERT INTO "%s" ( %s ) VALUES ( %s )', self::TABLE_NAME_OBIEKT_A4, $fields, $inspoints );

$stmt = $DB->prepare($q);
$stmt -> bindValue( ':id',            1, PDO::PARAM_INT );
$stmt -> bindValue( ':name',          'my id is 1',  PDO::PARAM_STR );
$stmt -> bindValue( ':obiekt_c4_id',  999,    PDO::PARAM_INT );
$stmt -> execute();

$DB->commit();


Expected result:
----------------
Exception should be thrown on  '$DB->commit()'

Actual result:
--------------
Exception is thrown on '$stmt -> execute()', so '$DB->exec( 'SET CONSTRAINTS ALL DEFERRED' );' doesnt work :(

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-06-28 09:22 UTC] tony2001@php.net
Doesn't work? Exception? Could you please be more specific? 
Don't forget to paste all error messages you see.
 [2007-06-28 10:54 UTC] zolv at t-k dot pl
Trying to "be more specific" i found bugs in my code.

Thanks for fast reply.
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Wed Mar 03 08:01:25 2021 UTC