Врут ли документы о AutoCommit DBD :: Pg? - PullRequest
3 голосов
/ 06 марта 2012

Из документов :

В соответствии со спецификацией DBI по умолчанию AutoCommit является истинным значением.В этом режиме любое изменение в базе данных вступает в силу немедленно.Любые операторы BEGIN, COMMIT или ROLLBACK будут отклонены. DBD :: Pg реализует AutoCommit, выполняя оператор BEGIN непосредственно перед выполнением оператора, а затем COMMIT.

Мой тестовый скрипт:

#!/usr/bin/perl

use strict;
use warnings;
use DBI;

my $dbh = DBI->connect("dbi:Pg:dbname=test");
print "AutoCommit = $dbh->{AutoCommit}\n";
$dbh->do('INSERT INTO foo(x) VALUES (1)');

Вывод скрипта:

AutoCommit = 1

И мои журналы (с log_statement = 'all'):

2012-03-05 20:21:02 CST rootLOG: оператор: INSERT INTO foo (x) VALUES (1)

(прости меня за проверку моего скрипта как root!)

Где находитсяBEGIN и COMMIT мне пообещали DBD :: Pg docs?

Ответы [ 2 ]

1 голос
/ 01 января 2013

В результате собственного тестирования я пришел к выводу, что это ошибка в документации DBD :: Pg. Соответственно, я подал Ошибка # 82356 в CPAN, что было решено 8 февраля 2013 года.

1 голос
/ 06 марта 2012

Я предполагаю, что AutoCommit = 1 делает пометку сеанса как AUTOCOMMIT на стороне сервера, см. http://www.postgresql.org/docs/9.1/static/ecpg-sql-set-autocommit.html. Чтобы убедиться, что нам нужно взглянуть на источник dbi :: Pg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...