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 1o0eAH-0006ID-HP for pgsql-bugs@arkaria.postgresql.org; Mon, 13 Jun 2022 07:07:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1o0eAG-0005QZ-4X for pgsql-bugs@arkaria.postgresql.org; Mon, 13 Jun 2022 07:07:08 +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 1o0eAF-0005QQ-Qq for pgsql-bugs@lists.postgresql.org; Mon, 13 Jun 2022 07:07:07 +0000 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1o0eAD-00080k-GI for pgsql-bugs@lists.postgresql.org; Mon, 13 Jun 2022 07:07:06 +0000 Received: by mail-pj1-x1029.google.com with SMTP id gc3-20020a17090b310300b001e33092c737so5096783pjb.3 for ; Mon, 13 Jun 2022 00:07:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:message-id:to:cc:subject:from:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=jcXf2jvawBq5/JIiSDjnATC5ikGV76YpMxcUrCN4KU4=; b=HsmD2edG14spKeqSD4nmHKsoAwCeaM2OYhNEIW7P4bzSOmMLDVgtA3y3hzLnnX8Rid KhGQ2rvBWKscH3oIM5mQ+66U5+gWJSnUxYJBDy4ExrYfzFsmeuuWALOhCSAsQDHwE0Yq 0b2RGWH2mKzGdUM4UR2QzAbT4VVMSWlw/B1v1TTL/Dw180a5e13q4Xh6yK8ORP9XXrBp G9faQono+5x7uJQJrrbyUgf/u47tq2edwvneHEVyc9J6yGlgeWofG75Scxo/pKVugyA8 DvjGbIurv40PMn/MFgRlqhWVmCXSch8n9qnQbJf+ZngCq33s/ZwCSlBHjMyG1UJeD3Mh DzNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:to:cc:subject:from:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=jcXf2jvawBq5/JIiSDjnATC5ikGV76YpMxcUrCN4KU4=; b=QBBT/jQeKbT7ZlxDW37S0hDnmNYu8hZB22yZvIhpfrdfZ6C9wcYKcGLbADieC/Bok6 xYlMBKFgn99dYYcu5a6PZSkYqC8ml5I12V0zu2NdeDlHkB3wUQZdXl1hS89KfbIe+ICd fxFuOLKUUghsMvTqjeRrYDFxdN6ISVIbLFIbhekJrFnpCJmnbqtbGMrHa2pnZJ2Lpbgj b5oFnk71d3mXzztQVtx7abMe/UL8C8wfeqMPngcpbITmtb0SFdahOJOUDvMawI/Umim6 aN6+re81lLFAst3S8g7mynFxKq3PMTLcJZoS/OYlTdeP0a592BFhoUfsOXUn6cXLjsRz 0f9g== X-Gm-Message-State: AOAM530VIV0xaigAv7b2WbIk8I5dqH8RCyWTT2ywOUtU4wK8Nq7Y03bF 3K/6ndgX1fhEa9xze1+pYrU= X-Google-Smtp-Source: ABdhPJy5btjTybOcq1jw2hTDwDYYrq1sW8oLcRfZxqRwhj55UgTya48K4dIArsy6iQHOzEW1Kxn6Xg== X-Received: by 2002:a17:902:82c4:b0:167:93c0:c955 with SMTP id u4-20020a17090282c400b0016793c0c955mr32346764plz.162.1655104024352; Mon, 13 Jun 2022 00:07:04 -0700 (PDT) Received: from localhost (KD036014041111.ppp-bb.dion.ne.jp. [36.14.41.111]) by smtp.gmail.com with ESMTPSA id p2-20020a1709027ec200b0015e8d4eb28fsm4246564plb.217.2022.06.13.00.07.02 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 13 Jun 2022 00:07:03 -0700 (PDT) Date: Mon, 13 Jun 2022 16:07:01 +0900 (JST) Message-Id: <20220613.160701.975499861789120736.horikyota.ntt@gmail.com> To: michael@paquier.xyz Cc: tgl@sss.pgh.pa.us, robertmhaas@gmail.com, christoph.berg@credativ.de, pgsql-bugs@lists.postgresql.org Subject: Re: BUG #17504: psql --single-transaction -vON_ERROR_STOP=1 still commits after client-side error From: Kyotaro Horiguchi In-Reply-To: References: <2649417.1654875709@sss.pgh.pa.us> <2656555.1654877531@sss.pgh.pa.us> User-Agent: Mew version 6.8 on Emacs 26.1 Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk At Mon, 13 Jun 2022 15:45:05 +0900, Michael Paquier wrote in > On Fri, Jun 10, 2022 at 12:12:11PM -0400, Tom Lane wrote: > > Alternatively, one could argue that once we've decided to issue > > ROLLBACK, there's not really any reason to continue performing > > additional -c/-f actions, so that a sufficient fix would be to > > get rid of the loop's ON_ERROR_STOP conditionality: > > > > - if (successResult != EXIT_SUCCESS && pset.on_error_stop) > > + if (successResult != EXIT_SUCCESS) > > break; > > This suggestion does not look right to me with --single-transaction. > If not using ON_ERROR_STOP, I think that we should still loop through > all the switches given by the caller and force a COMMIT all the time > because the intention is that we don't care about failures while > processing. This gives me the attached as a result for HEAD, where we Agreed. It is actually a bug that on_error_stop is ignored here. > would issue a ROLLBACK only when using ON_ERROR_STOP to stop > immediately if there is a backend-side error or a client-side error. > I have expanded the tests where not using ON_ERROR_STOP, with errors > triggered at the end of the set of switches. - res = PSQLexec((successResult == EXIT_SUCCESS) ? . + res = PSQLexec((successResult != EXIT_SUCCESS && pset.on_error_stop) ? Thanks! > Now, do we really want to introduce this new behavior on HEAD? We are > post-beta so this does not me make me really comfortable if both > Robert and you don't like the change, even if the behavior of > --single-transaction/ON_ERROR_STOP on client-side failure is weird to > me and others from upthread. If you'd prefer see the original logic > in place, I don't mind putting the code in its previous shape. > However, I would like to keep all those TAP tests because we have zero > coverage in this area, and we have the base file to be able to do so > now. +1 for at least add the tests. regards. -- Kyotaro Horiguchi NTT Open Source Software Center