Re: Migration SQL Serveur 2008 vers PostgreSQL

From: "Jehan-Guillaume (ioguix) de Rorthais" <ioguix(at)free(dot)fr>
To: "F(dot) BROUARD / SQLpro" <sqlpro(at)club-internet(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Migration SQL Serveur 2008 vers PostgreSQL
Date: 2012-01-04 11:00:16
Message-ID: 4F043140.5080102@free.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 04/01/2012 09:59, F. BROUARD / SQLpro wrote:
> Bonjour,
>
> [...]
> - au niveau des procédures stockées (en fait elle n'existent pas, seule
> des fonctions atomiques existant dans PG) ce qui pose problème si des
> transactions sont encapsulées dans les PS.

Pourriez-vous détailler un peu ce point ? Ce que je comprends ici c'est
que PL/PgSQL ne supporte pas les sous transactions, j'imagine qu'il doit
y avoir une subtilité qui m'échappe. Par exemple (en 9.1.2):

test=# CREATE TABLE test (i int);
CREATE TABLE
test=# CREATE OR REPLACE FUNCTION public.test(val1 integer, val2
integer, subcommit boolean)
RETURNS SETOF test
LANGUAGE plpgsql
AS $function$
BEGIN
INSERT INTO test VALUES(val1);
BEGIN
INSERT INTO test VALUES(val2);
IF NOT subcommit THEN
RAISE SQLSTATE '40000';
END IF;
EXCEPTION WHEN SQLSTATE '40000' THEN
RAISE NOTICE $$paramètre subcommit à 'f',
rollback val2=%.$$, val2;
END;

RETURN QUERY SELECT * FROM test;
END
$function$
;
CREATE FUNCTION
test=# SELECT * FROM test(1,2,'t');
i
---
1
2
(2 lignes)

test=# SELECT * FROM test(3,4,'f');
NOTICE: paramètre subcommit à 'f', rollback val2=4.
i
---
1
2
3
(3 lignes)

Et du coup, ce même code semble aussi entrer en conflit avec votre point
« 2 - Une gestion des transactions "curieuse". » de votre documentation
« les limites des migrations vers PG », je cite particulièrement:
* « il est impossible de gérer une transaction à l'intérieur du code
d'une fonction postGreSL. »
* « En sus ce n'est pas parce que il y a une erreur que l'on doit
considérer automatiquement que la transaction doit être annulé. C'est en
principe l'auteur du code et lui seul qui doit décider de la règle de
gestion et non le SGBDR ! »

Bref, une subtilité m'échappe là dedans.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk8EMUAACgkQxWGfaAgowiLMYgCdEtpusIqQJXx5zOjN34YozwSB
qaEAoKIO8u3lBWL38Rem0te/iUKen0ta
=OEAA
-----END PGP SIGNATURE-----

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Guillaume Lelarge 2012-01-04 11:04:45 Re: Migration SQL Serveur 2008 vers PostgreSQL
Previous Message Dimitri Fontaine 2012-01-04 10:53:51 Re: Re : Migration SQL Serveur 2008 vers PostgreSQL