Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1neISg-0002lc-6Z for pgsql-docs@arkaria.postgresql.org; Tue, 12 Apr 2022 15:29:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1neISe-00010z-VY for pgsql-docs@arkaria.postgresql.org; Tue, 12 Apr 2022 15:29:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1neHoZ-0006I0-9j for pgsql-docs@lists.postgresql.org; Tue, 12 Apr 2022 14:48:19 +0000 Received: from mx0d-001a4c01.pphosted.com ([67.231.151.23] helo=mx0c-001a4c01.pphosted.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1neHoT-00061z-Ci for pgsql-docs@lists.postgresql.org; Tue, 12 Apr 2022 14:48:17 +0000 Received: from pps.filterd (m0075702.ppops.net [127.0.0.1]) by mx0d-001a4c01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 23C1mwPo027107; Tue, 12 Apr 2022 10:48:10 -0400 Authentication-Results: ppops.net; spf=pass smtp.mailfrom=sebastien.flaesch@4js.com; dkim=pass header.s=selector2-ourvolaris-onmicrosoft-com header.d=ourvolaris.onmicrosoft.com Received: from mail.ourvolaris.com ([206.25.40.41]) by mx0d-001a4c01.pphosted.com (PPS) with ESMTPS id 3fb7eb1nqh-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 12 Apr 2022 10:48:09 -0400 Received: from VOL-SLO-EXCH3.vgnet.volgrp.com (172.23.0.53) by VOL-SLO-EXCH4.vgnet.volgrp.com (172.23.0.54) with Microsoft SMTP Server (TLS) id 15.0.1497.28; Tue, 12 Apr 2022 15:48:04 +0100 Received: from EUR03-DB5-obe.outbound.protection.outlook.com (104.47.10.56) by VOL-SLO-EXCH3.vgnet.volgrp.com (172.23.0.53) with Microsoft SMTP Server (TLS) id 15.0.1497.28 via Frontend Transport; Tue, 12 Apr 2022 15:48:04 +0100 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=moK39FXN2GNNugu+rzTyFGvmhxsYD9577ZN543HfYfobKs+W5OHZi4UEZRlwv7gep64WdRAIwryM6OvNY3uKdsHwv2+CoZGZu3JAPfrBYaZ6tDht6nlJZKsiNlLMdhOlvNjXd18FzPE+CipHZ9AKix7TeSWob50tA13JnkqQDzNCls/Fpfo3B6TIE+huPDKUd1EvVglrz2Nm7FPkR0SdXjk0nboqSwQuIaxgfHQwGdQ3IQIH1t79sxttVNCLiR/tXu4Mg2MtggtaVnX9ufaMwPqL4pfNx7A1vG+iPumhHq0o1+YjgXlFpk/gKtGfzkkw/p84rxZr+PKJLP0YZ1Frvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5jDK+AASam5QSoLJZpMQKNL/YxFKJWhQkh2PS7rO/10=; b=AnND+rj+p3lunQb4nenc5mW+MsNCDwsei/I9fA22Kbf/rw9tt1/TQbUy2ebVy3ollPRZUd5gVgukYaprP8XYRFzNrpRlJSay/lPcPrK38EPllS6EJIv/gRpzwdKG8DmnoV6m8HwYyu+snDMn0v4nWRUtrUNeiKB46qT+ISrk8QwlyrEpcOfEkpUlWdRIWwSZQngQOMmJjkDB3mItGIoWvlbvg65xJ83WbpVfjx5eA1l+TstXUP9x1tkA53jwThF0wEDULcv1LqSvKG67OXtTq8+6smdGWarhWRNtuphJd4axGZJ9V7eUQ4O+lQpWQTiwAMsEcX82NcLyfPjNUnJqjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=4js.com; dmarc=pass action=none header.from=4js.com; dkim=pass header.d=4js.com; arc=none Received: from DBAP191MB1289.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:1c9::19) by AM9P191MB1825.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:3ec::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5164.18; Tue, 12 Apr 2022 14:48:03 +0000 Received: from DBAP191MB1289.EURP191.PROD.OUTLOOK.COM ([fe80::b866:d582:8a:22d7]) by DBAP191MB1289.EURP191.PROD.OUTLOOK.COM ([fe80::b866:d582:8a:22d7%3]) with mapi id 15.20.5144.029; Tue, 12 Apr 2022 14:48:03 +0000 From: Sebastien Flaesch To: "David G. Johnston" , Pg Docs Subject: Re: Missing example for SAVEPOINT using the same savepoint name Thread-Topic: Missing example for SAVEPOINT using the same savepoint name Thread-Index: AQHYTnt3W9YcxbEKMkiuOehUUxIODazsW4Xz Date: Tue, 12 Apr 2022 14:48:03 +0000 Message-ID: References: <164969280899.834802.7458840197227864320@wrigleys.postgresql.org> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: 53fe830c-ef93-d6f9-f854-21625a005bc5 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 764748be-81b8-45f8-e5d7-08da1c937277 x-ms-traffictypediagnostic: AM9P191MB1825:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: q+r+pXWRjHC5zj9/nmZ2XcDSKw+cWX2DqcdojsZ1D4XaOuH5GItaWLsNaFLknnWoi8YBe7I7LEA4RtVh26m/6sLk3MaTz6sD3eHBTXi3zGyWuAmcWkiCjQmHY8MuUQcVw+pyrjzr+5NbzJV1IrnSTuO2Fj02dhSAkfFWuuzT0FrzGKIebzdSVomsS6eOcZBU89vpS4F9l001oxYi6kbEvb5ZBKujqf4l/FooCIKsRrk6OsEeVHLy0Ep7U2XlL5+L0wKikFI0OPSuJrH6KMqs3lOAMAolpNCdlPDDOZ3c9xzB9m/GfW2NB9dhhZWO5+A7tBYQWAunXeoPQtaso4+74Lf/dPdSXESkZlmo/Lvi9YnHFHd2/rYwyatBlTEmz6Ewl5oGp1myJ559zi+YAW5vbO0yWbrw7tEq2LxsgLITtS0q3eKQp8TayaBXUHpLUtcxrdYzcEJP6GDp9V22xhxmcRc7ftjOToePX9PkHWYGQda0ZBX4D64L7So6lOzlW+Rk+dgAufk+rr5oYhGfEBLaU7JvRuUyReLpfKQxVnTe43WaA8nl+TrQMqyO/IFX8ZqXihsG2ZKI1AkqnBWCMVEKFy1uF118pwTL70Xk6r580l0Lh2zsjzz286PhEl4KreolIhblCfjIW0Q4xzOJKr+srGFXhCrMmBj8q26J0MTiYIIF8DHwnzQvcAF3fVZDUBbCg0rQq2Cx9ZvKIpHdhQ+mzg4QRb9xmkQ4lisUtO6CLSdYbPzKVnGBcGIQkrp5APsFy70AEhCsGNJ1nfHt5v2f6wcAj3/u2kmKLJhjLA6aXHY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAP191MB1289.EURP191.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(110136005)(52536014)(33656002)(122000001)(38100700002)(44832011)(966005)(86362001)(5660300002)(71200400001)(66946007)(19627405001)(8936002)(76116006)(8676002)(66476007)(66446008)(91956017)(64756008)(66556008)(498600001)(186003)(9686003)(38070700005)(26005)(6506007)(53546011)(2906002)(7696005)(166002)(83380400001)(55016003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?zOYNkanByXKQjPQ2Uj/WqwB8l+UxH1eYNqeJ1RvpxxAomeT25ItKgsZmerJJ?= =?us-ascii?Q?jfmahByz74qoAFGlHmwQQCA0MMNED/TrwS90PJfoMzJ0Itt+gTVqEoFBRF6F?= =?us-ascii?Q?mETDrn0K//UF44x4uKVG+nmOOypNvajwGjeF8ETmBTzZP1t4OwO9AwL3A79E?= =?us-ascii?Q?h5bbBmlqbryiZmL20rl4v5N58OCpKn3U5SALByjrxxndkVcrH9UVlHpsad8W?= =?us-ascii?Q?u1qIPvRMYGnp4GEyftdEBsjEYbeVGT67AAdgoa8QqeYsbqnnIEiG06ruCG72?= =?us-ascii?Q?UscUwzuqbwTvgCZZN+cWqKQUM7kYC93gdRsnCQSt1eFGCzs2z7o2fFe12srL?= =?us-ascii?Q?MNswMDFjIEbAlQAvIViu3KtctNqJ2xzlQq9iEIQasHNSPB7KkG1/HUQxeX68?= =?us-ascii?Q?00yGY5j84qVlHlq4tCrcWtfLBWz3fOXOFfQBUI7SS5HJxVKZeusIYWDOccZu?= =?us-ascii?Q?D59j/a2eOaQNz1DA2Q7WdhD21kUtG9hMICfn+cqDvYLxNpqrSKsdmhwex6sN?= =?us-ascii?Q?QmLEGXHbFn3H3YDwkVMMqYaVfkS9iEy2+pzOIyqefFUMTk5xxz/UpIgn0/gi?= =?us-ascii?Q?ydjiUFXYRmTLRQhRQP8l1GnrvbKvKSJtW+bmjs4KsT/TuwW7EPtbTaDXXyoV?= =?us-ascii?Q?XF3PB+Tir5HRsM8xyxahjHdqIlNF1Q5iQ1+0bgJShy40p3J1tkGrUcAh2/u/?= =?us-ascii?Q?qVfl/1rLrz0ziZjTy0eHMw2mUhVqctz3T7Q+QIGtqThF8ZQq31Reb8Sin1DK?= =?us-ascii?Q?imHQwsv14bs56GF8PBICwBTo1MIZrVUzy9kc08dhNsW9meWOeTV+cIVonWbq?= =?us-ascii?Q?Lfh8dTO1ZTaiHbzSNoAqB6Pr0xP1djvPPvcJrAVqGWIq+kRanFZ9YChhYHsA?= =?us-ascii?Q?4FVLYjUPRwj5WyljOurP8ityOiQXeDRS6H8LX+hf3Gv7X4t0aIigstBohBGq?= =?us-ascii?Q?If/Va/7Sa0Ms7TK3HRY/nCWGF+/l4GecRarUeoybpadKq9QARbwj4XTwuJPT?= =?us-ascii?Q?CiBffmaRTNqhy7reXAPL6KuHR6OyGbHqCspq5SnAKFXa2/wOmbQWk39hMyrh?= =?us-ascii?Q?d3ABzy0X6rsEcd04LBn6YA2VJUiNgElC5wFlmTtRLAT+Z1atoowInpGSKDjH?= =?us-ascii?Q?ty5wvYVYGwZd2Eg3MWyAy4GxG3PO1pKOCwGrhqalTuSfD9Nmve3azrO6l7Vf?= =?us-ascii?Q?LaEpk9zHz22ulhW3/shh1qT63cbar8Jh5D4aeko0uhZckslU5cNyPO7fWCEm?= =?us-ascii?Q?OEgCdMa9IJVaviX5n1yDQL53zApY3vixdmzlFUdx+wjxCvg2X0KMnibkBX43?= =?us-ascii?Q?gp7Rmw9OsBnAsAHjFKM4nrBKmxWm4Yk/p9VNWNtzRb1fKbbPM5j+GEsAWS4Q?= =?us-ascii?Q?Bf9fWNaoyNY0neJVqMW+U7pmBWfMbictuSzuiQXj0b/wUOLdZ5LoWCr3uLIg?= =?us-ascii?Q?8Q1hqLqnKE3rt1z+Bli+mZByHx9K3PZvudTBm4idV5kfPaPR16TLZFkE7BK8?= =?us-ascii?Q?tPk1m4MgmxRq6edkTaVKea5Uf2fqc5VKwE6q6jCE16ZSEYzLP6UOLOUBY50G?= =?us-ascii?Q?jU7Czs1pfgB+0c+Iz0kdoTE5N91F0+StZWfwOA3Er0bUagmfqsbvkSI2mcGa?= =?us-ascii?Q?Fcfr9RT0Kv5VxVyCQ5G9SsUO6HkTbjjOkKhKA4u8m6i7bC8uKwRpnwyc9G3p?= =?us-ascii?Q?j9xwvzGc9VzhoICHs+pzQmP+l6OmSjvkBFeV2Ylyms3PIzBxGnm+BQYlz+v6?= =?us-ascii?Q?uqgA5u//piwrEUrrIFOy777GpW6tLFY=3D?= Content-Type: multipart/alternative; boundary="_000_DBAP191MB12892634CE244CF252EC21F7B0ED9DBAP191MB1289EURP_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBAP191MB1289.EURP191.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 764748be-81b8-45f8-e5d7-08da1c937277 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2022 14:48:03.1796 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 75c696ec-5bfb-4892-9a0c-9187a9061cd6 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9XMwaEFSNAEFnpaMRsw5uf51LgcVHtYQGZAxI9vKxUiiHfLhpBECFIBbkR77rMOARfqrjzAh8lTZD2Xmo2gLMNj5yVG6oWsDcgIyivKnWFM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P191MB1825 X-OriginatorOrg: 4js.com X-C2ProcessedOrg: 2f0c79df-a80b-40c2-9362-4c5fa2dae201 X-Proofpoint-ORIG-GUID: CrG4WdkGc9f4bPqv3CXzdW5GZAOw2HQo X-Proofpoint-GUID: CrG4WdkGc9f4bPqv3CXzdW5GZAOw2HQo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-12_05,2022-04-12_02,2022-02-23_01 X-Proofpoint-Spam-Reason: safe List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_000_DBAP191MB12892634CE244CF252EC21F7B0ED9DBAP191MB1289EURP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello! The new sample code looks clearer I agree! Seb ________________________________ From: David G. Johnston Sent: Tuesday, April 12, 2022 4:41 PM To: Sebastien Flaesch ; Pg Docs Subject: Re: Missing example for SAVEPOINT using the same savepoint name EXTERNAL: Do not click links or open attachments if you do not recognize th= e sender. On Mon, Apr 11, 2022 at 9:43 AM PG Doc comments form > wrote: The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/14/sql-savepoint.html Description: The "Compatibility" section deserves some code example to illustrate the behavior when reusing the same savepoint name. I agree with the premise but not the implementation. I've attached (and in= lined) a patch that implements the example change, updates savepoint to int= roduce the behavior prior to the example, and updates the rollback to savep= oint to note the behavior as well. commit e921441f22bad972393144628c7ee48845d5384c Author: David G. Johnston > Date: Tue Apr 12 14:30:11 2022 +0000 doc: Improve docs regarding savepoint name reuse Per documentation comment the savepoint command lacks an example where the savepoint name is reused. The suggested example didn't conform to the others on the page, nor did the suggested location in compatibility seem desirable, but the omission rang true. Add another example to the examples section demonstrating this case. Additionally, document under the description for savepoint_name that we allow for the name to be repeated - and note what that means in terms of release and rollback. It seems desirable to place this comment in description rather than notes for savepoint. For the other two commands the behavior in the presence of duplicate savepoint names best fits as notes. In fact release already had one. This commit copies the same verbiage over to rollback. diff --git a/doc/src/sgml/ref/rollback_to.sgml b/doc/src/sgml/ref/rollback_= to.sgml index 3d5a241e1a..7bd1b41feb 100644 --- a/doc/src/sgml/ref/rollback_to.sgml +++ b/doc/src/sgml/ref/rollback_to.sgml @@ -89,6 +89,12 @@ ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_nameROLLBACK TO SAVEPOINT, the cursor can no longer be u= sed. + + + If multiple savepoints have the same name, only the one that was most + recently defined is released. + + diff --git a/doc/src/sgml/ref/savepoint.sgml b/doc/src/sgml/ref/savepoint.s= gml index b17342a1ee..fd017935ea 100644 --- a/doc/src/sgml/ref/savepoint.sgml +++ b/doc/src/sgml/ref/savepoint.sgml @@ -53,7 +53,9 @@ SAVEPOINT savepoint_name savepoint_name - The name to give to the new savepoint. + The name to give to the new savepoint. The name may already exist, + in which case a rollback or release to the same name will use the + one that was most recently defined. @@ -106,6 +108,25 @@ COMMIT; The above transaction will insert both 3 and 4. + + + To use a single savepoint name: + +BEGIN; + INSERT INTO table1 VALUES (1); + SAVEPOINT my_savepoint; + INSERT INTO table1 VALUES (2); + SAVEPOINT my_savepoint; + INSERT INTO table1 VALUES (3); + ROLLBACK TO SAVEPOINT my_savepoint; + SELECT * FROM table1; // 1, 2 + ROLLBACK TO SAVEPOINT my_savepoint; + SELECT * FROM table1; // just 1 +COMMIT; + + The above transaction shows row 3 being rolled back first then row 2. + + --_000_DBAP191MB12892634CE244CF252EC21F7B0ED9DBAP191MB1289EURP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Hello!
The new sample code looks clearer I agree!
Seb

From: David G. Johnston <= ;david.g.johnston@gmail.com>
Sent: Tuesday, April 12, 2022 4:41 PM
To: Sebastien Flaesch <sebastien.flaesch@4js.com>; Pg Docs <= ;pgsql-docs@lists.postgresql.org>
Subject: Re: Missing example for SAVEPOINT using the same savepoint = name
 

EXTERNAL: Do not c= lick links or open attachments if you do not recognize the sender.=

On Mon, Apr 11,= 2022 at 9:43 AM PG Doc comments form <noreply@postgresql.org> wrote:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/sql-savepoint.html
Description:

The "Compatibility" section deserves some code example to illustr= ate the
behavior when reusing the same savepoint name.


I agree with the premise but not the implementation.  I've attach= ed (and inlined) a patch that implements the example change, updates savepo= int to introduce the behavior prior to the example, and updates the rollback to savepoint to note the behavior as wel= l.


commit e921441f22bad972393144628c7ee48845d5384c
Author: David G. Johnston <david.g.johnston@gmail.com>
Date:   Tue Apr 12 14:30:11 2022 +0000

    doc: Improve docs regarding savepoint name reuse
   
    Per documentation comment the savepoint command lacks an exam= ple
    where the savepoint name is reused.  The suggested examp= le didn't
    conform to the others on the page, nor did the suggested loca= tion
    in compatibility seem desirable, but the omission rang true. = Add
    another example to the examples section demonstrating this ca= se.
    Additionally, document under the description for savepoint_na= me
    that we allow for the name to be repeated - and note what tha= t
    means in terms of release and rollback. It seems desirable to=
    place this comment in description rather than notes for savep= oint.
    For the other two commands the behavior in the presence of     duplicate savepoint names best fits as notes.  In fact r= elease
    already had one.  This commit copies the same verbiage o= ver to
    rollback.

diff --git a/doc/src/sgml/ref/rollback_to.sgml b/doc/src/sgml/ref/rollback_= to.sgml
index 3d5a241e1a..7bd1b41feb 100644
--- a/doc/src/sgml/ref/rollback_to.sgml
+++ b/doc/src/sgml/ref/rollback_to.sgml
@@ -89,6 +89,12 @@ ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] <rep= laceable>savepoint_name</re
    cannot-execute state, so while the transaction can be restore= d using
    <command>ROLLBACK TO SAVEPOINT</command>, the cur= sor can no longer be used.
   </para>
+
+  <para>
+   If multiple savepoints have the same name, only the one that was m= ost
+   recently defined is released.
+  </para>
+
  </refsect1>
 
  <refsect1>
diff --git a/doc/src/sgml/ref/savepoint.sgml b/doc/src/sgml/ref/savepoint.s= gml
index b17342a1ee..fd017935ea 100644
--- a/doc/src/sgml/ref/savepoint.sgml
+++ b/doc/src/sgml/ref/savepoint.sgml
@@ -53,7 +53,9 @@ SAVEPOINT <replaceable>savepoint_name</replaceab= le>
     <term><replaceable>savepoint_name</repla= ceable></term>
     <listitem>
      <para>
-      The name to give to the new savepoint.
+      The name to give to the new savepoint.  The name= may already exist,
+      in which case a rollback or release to the same name = will use the
+      one that was most recently defined.
      </para>
     </listitem>
    </varlistentry>
@@ -106,6 +108,25 @@ COMMIT;
 </programlisting>
    The above transaction will insert both 3 and 4.
   </para>
+
+  <para>
+  To use a single savepoint name:
+<programlisting>
+BEGIN;
+    INSERT INTO table1 VALUES (1);
+    SAVEPOINT my_savepoint;
+    INSERT INTO table1 VALUES (2);
+    SAVEPOINT my_savepoint;
+    INSERT INTO table1 VALUES (3);
+    ROLLBACK TO SAVEPOINT my_savepoint;
+    SELECT * FROM table1; // 1, 2
+    ROLLBACK TO SAVEPOINT my_savepoint;
+    SELECT * FROM table1; // just 1
+COMMIT;
+</programlisting>
+  The above transaction shows row 3 being rolled back first then row = 2.
+  </para>
+
  </refsect1>
 
  <refsect1>
 
--_000_DBAP191MB12892634CE244CF252EC21F7B0ED9DBAP191MB1289EURP_--