Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:122283 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 82118 invoked from network); 5 Feb 2024 12:35:56 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 5 Feb 2024 12:35:56 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1707136608; bh=cUr7Jcq03sV2k3E/pTodW28TOdgr61eOR1EcBI9oKsQ=; h=References:In-Reply-To:From:Date:Subject:To:From; b=TSKG0IInwqXurXP1HzryPMBE4Q/irP0nwIEMDgFhEP6GPN1wf7HHISh8dCed90N2X fCP5wtFd2jepmt6PPlZLdTT+PkTa1SJjwAHT2cxkwiPMK6iQ8Qjj2aY9NFtqOgCbDh abKO4ZQ4YZukn9q9c/DdT2eF2QgkVneCRhpvu025XHbfLqgqlVXaaJsfyPSOCtbvOv mwweGJth5/sRaPDx/kr77XvIiCLoOgjKiv/bwGs36pEHfFeYOLQG9DBYPFDY2oNQLe TFyCKlcB2PbugRYXe842RccWVlGVPnXc+XQHCj13ytxlknI1mwEdlG5ovj1ekg3uJi +V0+xdRTcjCCQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id BA86618005A for ; Mon, 5 Feb 2024 04:36:47 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_20,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from mail-ua1-f50.google.com (mail-ua1-f50.google.com [209.85.222.50]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Mon, 5 Feb 2024 04:36:47 -0800 (PST) Received: by mail-ua1-f50.google.com with SMTP id a1e0cc1a2514c-7d2e19120b5so2274748241.2 for ; Mon, 05 Feb 2024 04:35:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=youmind.jp; s=google; t=1707136555; x=1707741355; darn=lists.php.net; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=cUr7Jcq03sV2k3E/pTodW28TOdgr61eOR1EcBI9oKsQ=; b=EJ6sCMnQrMCRDICXTIVN2l/DDRYmxgthnbRfIe7EQSGWbZWawiVrxg7l3DscgA79/X b+z45mpaYhtdzKXLhU+77Q7UAxhyoPPqJRa/UXea3Y0tA62oplFT4D7XAHRb7ffbgc3C 1m0WIjSYPE1B2lZOPyrRIUb6m5XHhb/o7VttynvaQEjH8GO3/cO8L09p+iane9UbrXGy qipQ23SS4jh/KJNtWl756oRsDefjnawWWg6o+U5cwd1GzPSP3HPKxs/AapHSrTtvzLdu Wr/N7QxS/03Xw/la1jN6SY9ZjhjQ0jr7RRu3ecn3qdA+kEaBX0aLDc4p5Ul/X9YgxBf0 U3dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707136555; x=1707741355; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cUr7Jcq03sV2k3E/pTodW28TOdgr61eOR1EcBI9oKsQ=; b=m7XdSOMjJOTsxxXJbOsyejhcxbflXn/lYqcGGy7iboEPB9qfZ88mRmiWDHEafJzpcv Hm3RnzOCHTWoiW3yfBSpctPapcmQeHLA2NRHGD0z6TcGw+qyzc1jymrJYuyrdBpKokBD cVLPhTNpTVvKh8QMiKf1Tl6wyRjuXwHK22hEBewM9ugC9zwpSseShxzzVkzbBxUcJbTB 35WHCWgeAl535QZh62gGYK9EemjbpGYEHNcpo0XFVKSbPz8o+ZRQamjyASOCsWBP3ob5 jTTrvVJoI/K63yagGfB5/Ovw+eufTRki6Op9cUpXVeIBnsQX6CuyWP2OeGrbvZhLO03a pNjg== X-Gm-Message-State: AOJu0Yz0y3oTOCeGlUQEj2pmJebUPAKrlWRuc7x5Q3ER5X/qTPtzn4BQ XJDG8kfqqJMxxaETIp4cPD/8UgPlSkYTGNQoGn/R6Yixqc7yYeyk4KKiPXMzZAqanZ59f7P9kn0 U/sLnLjV4nVtTeatSjIstOw5b9m7PEPMooziR/Ergjmy2om7sM9w= X-Google-Smtp-Source: AGHT+IH8fOA0jewLsIO+CW17/A9FYfM4KpW0HTn/DE+oGkTUxLxNsrqFqP86tCprAcQKMLBIegjs0VmN67c5/6HHgzk= X-Received: by 2002:a05:6102:2a4b:b0:46d:2d78:4297 with SMTP id gt11-20020a0561022a4b00b0046d2d784297mr2528891vsb.25.1707136554839; Mon, 05 Feb 2024 04:35:54 -0800 (PST) MIME-Version: 1.0 References: <325E790F-5E88-4559-862F-6C4ACBC89779@sakiot.com> In-Reply-To: <325E790F-5E88-4559-862F-6C4ACBC89779@sakiot.com> Reply-To: Kentaro Takeda Date: Mon, 5 Feb 2024 21:35:43 +0900 Message-ID: To: Saki Takamachi , PHP internals Content-Type: text/plain; charset="UTF-8" Subject: Re: [PHP-DEV] [Proposal] Add `savepoint()` method to PDO From: internals@lists.php.net ("Kentaro Takeda via internals") Hi Saki, Aside from a few concerns, I think your proposal is very sensible. I have long felt a disconnect that while we have `beginTransaction()`, `commit()`, and `rollback()` methods, there's no equivalent functionality for `SAVEPOINT` in PDO. It seems natural to support these commonly used transactional features as part of PDO's functionality. Having consistent support through PDO would be greatly appreciated from a user perspective, but I do have concerns regarding the variations in SQL. The following code is quoted from Laravel: https://github.com/laravel/framework/blob/v10.43.0/src/Illuminate/Database/Query/Grammars/Grammar.php#L1307-L1310 ```php return 'SAVEPOINT '.$name; ``` While most databases use `SAVEPOINT [name]`, but: https://github.com/laravel/framework/blob/v10.43.0/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php#L453-L456 ```php return 'SAVE TRANSACTION '.$name; ``` SQL Server uniquely uses `SAVE TRANSACTION [name]`. There might be other variations in databases, so full support could be challenging, which is something to be mindful of. > change the signature of `rollback()` to `rollback(?string $name = null)`. This might lead to confusion due to `rollback()` having multiple functionalities, as `ROLLBACK` and `ROLLBACK TO [name]` target different rollback operations. Just as `beginTransaction()` and `savepoint()` are separate, perhaps having a separate method for rolling back to a savepoint might maintain consistency, for example `rollbackToSavepoint(string $name)`. Regards. Kentaro