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 1ogn5N-0007E9-69 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Oct 2022 13:08:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ogn5K-00012x-S9 for pgsql-hackers@arkaria.postgresql.org; Fri, 07 Oct 2022 13:08:14 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogn5K-00011e-GZ for pgsql-hackers@lists.postgresql.org; Fri, 07 Oct 2022 13:08:14 +0000 Received: from mail1.dalibo.net ([51.159.93.128] helo=mail.dalibo.com) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ogn5H-0007no-6C for pgsql-hackers@lists.postgresql.org; Fri, 07 Oct 2022 13:08:14 +0000 Received: from [192.168.0.29] (unknown [78.201.30.201]) by mail.dalibo.com (Postfix) with ESMTPSA id 95C021FA6F; Fri, 7 Oct 2022 15:08:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dalibo.com; s=a; t=1665148085; bh=To/coOIC0NOZ6/rcY++wFh0Ig7XhbfIENjlMRwQzcgk=; h=Date:To:From:Subject:From; b=fJEQY8GXgkuDZcPFKaxaPaf4sdPAlU4XecJ8HxpRYQgkbv9jATnEkJLJDRKsL7bT4 tvqmbRWdle7giKGi8c51TY71ZkUs0h5IniHJd/9dw8ueNCfE/kJ0gU6MwqGTkgE37Y 90OLt0z+JfL4HH+3Epz9BLq6aXLErUpKg+013XiA= Content-Type: multipart/mixed; boundary="------------3PBKqFaVRrlNmYJ0JrJVloC5" Message-ID: <01af18c5-dacc-a8c8-07ee-aecc7650c3e8@dalibo.com> Date: Fri, 7 Oct 2022 15:08:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 To: pgsql-hackers@lists.postgresql.org Content-Language: fr, en-GB From: Denis Laxalde Subject: [PATCH] Reset single-row processing mode at end of pipeline commands queue List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------3PBKqFaVRrlNmYJ0JrJVloC5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, I'm trying to make single-row mode and pipeline mode work together in Psycopg using libpq. I think there is something wrong with respect to the single-row mode flag, not being correctly reset, in some situations. The minimal case I'm considering is (in a pipeline): * send query 1, * get its results in single-row mode, * send query 2, * get its results *not* in single-row mode. It seems that, as the command queue in the pipeline is empty after getting the results of query 1, the single-row mode flag is not reset and is still active for query 2, thus leading to an unexpected PGRES_SINGLE_TUPLE status. The attached patch demonstrates this in the test suite. It also suggests to move the statement resetting single-row mode up in pqPipelineProcessQueue(), before exiting the function when the command queue is empty in particular. Thanks for considering, Denis --------------3PBKqFaVRrlNmYJ0JrJVloC5 Content-Type: text/x-patch; charset=UTF-8; name="0001-Reset-single-row-processing-mode-at-end-of-pipeline-.patch" Content-Disposition: attachment; filename*0="0001-Reset-single-row-processing-mode-at-end-of-pipeline-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBkZTI4ZDlhYzFlNTQxYzNiM2EwMjc5ZGM1OGZiNWE3ZjIzZjc3NWY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEZW5pcyBMYXhhbGRlIDxkZW5pcy5sYXhhbGRlQGRh bGliby5jb20+CkRhdGU6IEZyaSwgNyBPY3QgMjAyMiAxNDowMDoyNCArMDIwMApTdWJqZWN0 OiBbUEFUQ0hdIFJlc2V0IHNpbmdsZS1yb3cgcHJvY2Vzc2luZyBtb2RlIGF0IGVuZCBvZiBw aXBlbGluZSBjb21tYW5kcwogcXVldWUKClByZXZpb3VzbHksIHdlJ2QgcmVzZXQgdGhlIHNp bmdsZS1yb3cgbW9kZSBvbmx5IHdoZW4gcHJvY2Vzc2luZyByZXN1bHRzCm9mIHRoZSBuZXh0 IGNvbW1hbmQgaW4gYSBwaXBlbGluZSBhbmQgbm90IGlmIHRoZXJlJ3Mgbm8gbW9yZSBjb21t YW5kcyBpbgp0aGUgcXVldWUuIEJ1dCBpZiB0aGUgY2xpZW50IGVtaXRzIGEgcXVlcnksIHJl dHJpZXZlcyBpdHMgcmVzdWx0cyBpbgpzaW5nbGUtcm93IG1vZGUgKHRodXMgc2V0dGluZyBz aW5nbGUtcm93IG1vZGUgZmxhZyksIHRoZW4gZW1pdHMgYW5vdGhlcgpxdWVyeSBhbmQgd2Fu dHMgdG8gcmV0cmlldmUgaXRzIHJlc3VsdCBpbiAibm9ybWFsIiBtb2RlLCB0aGUgc2luZ2xl LXJvdwptb2RlIHdhcyBub3QgcmVzZXQgaW4gcHFQaXBlbGluZVByb2Nlc3NRdWV1ZSgpOyB0 aGlzIGxlYWQgdG8gYW4KZXJyb25lb3VzIFBHUkVTX1NJTkdMRV9UVVBMRSBpbnN0ZWFkIG9m LCBlLmcuLCBQR1JFU19UVVBMRVNfT0suCgpXZSBmaXggdGhpcyBieSByZXNldHRpbmcgdGhl IHNpbmdsZS1yb3cgbW9kZSAqZXZlbiogaWYgdGhlIGNvbW1hbmQgcXVldWUKaXMgZW1wdHkg aW4gcHFQaXBlbGluZVByb2Nlc3NRdWV1ZSgpLgotLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWV4ZWMuYyAgICAgICAgICAgICAgICB8IDEyICsrKy0tLQogLi4uL21vZHVsZXMvbGli cHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyAgIHwgNDMgKysrKysrKysrKysrKysrKysr LQogLi4uL2xpYnBxX3BpcGVsaW5lL3RyYWNlcy9zaW5nbGVyb3cudHJhY2UgICAgIHwgMjAg KysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jCmluZGV4IDAyNzRjMWIxNTYuLjY0NzAx YjU2MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYworKysg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1leGVjLmMKQEAgLTMwOTYsNiArMzA5NiwxMiBA QCBwcVBpcGVsaW5lUHJvY2Vzc1F1ZXVlKFBHY29ubiAqY29ubikKIAkJCWJyZWFrOwogCX0K IAorCS8qCisJICogUmVzZXQgc2luZ2xlLXJvdyBwcm9jZXNzaW5nIG1vZGUuICAoQ2xpZW50 IGhhcyB0byBzZXQgaXQgdXAgZm9yIGVhY2gKKwkgKiBxdWVyeSwgaWYgZGVzaXJlZC4pCisJ ICovCisJY29ubi0+c2luZ2xlUm93TW9kZSA9IGZhbHNlOworCiAJLyoKIAkgKiBJZiB0aGVy ZSBhcmUgbm8gZnVydGhlciBjb21tYW5kcyB0byBwcm9jZXNzIGluIHRoZSBxdWV1ZSwgZ2V0 IHVzIGluCiAJICogInJlYWwgaWRsZSIgbW9kZSBub3cuCkBAIC0zMTE1LDEyICszMTIxLDYg QEAgcHFQaXBlbGluZVByb2Nlc3NRdWV1ZShQR2Nvbm4gKmNvbm4pCiAJLyogSW5pdGlhbGl6 ZSBhc3luYyByZXN1bHQtYWNjdW11bGF0aW9uIHN0YXRlICovCiAJcHFDbGVhckFzeW5jUmVz dWx0KGNvbm4pOwogCi0JLyoKLQkgKiBSZXNldCBzaW5nbGUtcm93IHByb2Nlc3NpbmcgbW9k ZS4gIChDbGllbnQgaGFzIHRvIHNldCBpdCB1cCBmb3IgZWFjaAotCSAqIHF1ZXJ5LCBpZiBk ZXNpcmVkLikKLQkgKi8KLQljb25uLT5zaW5nbGVSb3dNb2RlID0gZmFsc2U7Ci0KIAlpZiAo Y29ubi0+cGlwZWxpbmVTdGF0dXMgPT0gUFFfUElQRUxJTkVfQUJPUlRFRCAmJgogCQljb25u LT5jbWRfcXVldWVfaGVhZC0+cXVlcnljbGFzcyAhPSBQR1FVRVJZX1NZTkMpCiAJewpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGlu ZS5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5j CmluZGV4IGM2MDlmNDIyNTguLjRiOWNjYmZiNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYworKysgYi9zcmMvdGVzdC9t b2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMKQEAgLTExNTMsMTEgKzEx NTMsMTEgQEAgdGVzdF9zaW5nbGVyb3dtb2RlKFBHY29ubiAqY29ubikKIAlpbnQJCQlpOwog CWJvb2wJCXBpcGVsaW5lX2VuZGVkID0gZmFsc2U7CiAKLQkvKiAxIHBpcGVsaW5lLCAzIHF1 ZXJpZXMgaW4gaXQgKi8KIAlpZiAoUFFlbnRlclBpcGVsaW5lTW9kZShjb25uKSAhPSAxKQog CQlwZ19mYXRhbCgiZmFpbGVkIHRvIGVudGVyIHBpcGVsaW5lIG1vZGU6ICVzIiwKIAkJCQkg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCisJLyogT25lIHNlcmllcyBvZiB0aHJlZSBjb21t YW5kcywgdXNpbmcgc2luZ2xlLXJvdyBtb2RlIGZvciB0aGUgZmlyc3QgdHdvLiAqLwogCWZv ciAoaSA9IDA7IGkgPCAzOyBpKyspCiAJewogCQljaGFyCSAgICpwYXJhbVsxXTsKQEAgLTEy NDksNiArMTI0OSw0NyBAQCB0ZXN0X3NpbmdsZXJvd21vZGUoUEdjb25uICpjb25uKQogCQkJ cGdfZmF0YWwoImRpZG4ndCBnZXQgZXhwZWN0ZWQgdGVybWluYXRpbmcgVFVQTEVTX09LIik7 CiAJfQogCisJLyoKKwkgKiBOb3cgaXNzdWUgb25lIGNvbW1hbmQsIGdldCBpdHMgcmVzdWx0 cyBpbiB3aXRoIHNpbmdsZS1yb3cgbW9kZSwgdGhlbgorCSAqIGlzc3VlIGFub3RoZXIgY29t bWFuZCwgYW5kIGdldCBpdHMgcmVzdWx0cyBpbiBub3JtYWwgbW9kZTsgbWFrZSBzdXJlCisJ ICogdGhlIHNpbmdsZS1yb3cgbW9kZSBmbGFnIGlzIHJlc2V0IGFzIGV4cGVjdGVkLgorCSAq LworCWlmIChQUXNlbmRRdWVyeVBhcmFtcyhjb25uLCAiU0VMRUNUIGdlbmVyYXRlX3Nlcmll cygwLCAwKSIsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApICE9IDEpCisJCQlwZ19m YXRhbCgiZmFpbGVkIHRvIHNlbmQgcXVlcnk6ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdl KGNvbm4pKTsKKwlpZiAoUFFzZW5kRmx1c2hSZXF1ZXN0KGNvbm4pICE9IDEpCisJCXBnX2Zh dGFsKCJmYWlsZWQgdG8gc2VuZCBmbHVzaCByZXF1ZXN0Iik7CisJaWYgKFBRc2V0U2luZ2xl Um93TW9kZShjb25uKSAhPSAxKQorCQlwZ19mYXRhbCgiUFFzZXRTaW5nbGVSb3dNb2RlKCkg ZmFpbGVkIik7CisJcmVzID0gUFFnZXRSZXN1bHQoY29ubik7CisJaWYgKHJlcyA9PSBOVUxM KQorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBOVUxMIik7CisJaWYgKFBRcmVzdWx0U3RhdHVz KHJlcykgIT0gUEdSRVNfU0lOR0xFX1RVUExFKQorCQlwZ19mYXRhbCgiRXhwZWN0ZWQgUEdS RVNfU0lOR0xFX1RVUExFLCBnb3QgJXMiLAorCQkJCSBQUXJlc1N0YXR1cyhQUXJlc3VsdFN0 YXR1cyhyZXMpKSk7CisJcmVzID0gUFFnZXRSZXN1bHQoY29ubik7CisJaWYgKHJlcyA9PSBO VUxMKQorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBOVUxMIik7CisJaWYgKFBRcmVzdWx0U3Rh dHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCQlwZ19mYXRhbCgiRXhwZWN0ZWQgUEdS RVNfVFVQTEVTX09LLCBnb3QgJXMiLAorCQkJCSBQUXJlc1N0YXR1cyhQUXJlc3VsdFN0YXR1 cyhyZXMpKSk7CisJaWYgKFBRZ2V0UmVzdWx0KGNvbm4pICE9IE5VTEwpCisJCXBnX2ZhdGFs KCJleHBlY3RlZCBOVUxMIHJlc3VsdCIpOworCisJaWYgKFBRc2VuZFF1ZXJ5UGFyYW1zKGNv bm4sICJTRUxFQ1QgMSIsIDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDApICE9IDEpCisJ CQlwZ19mYXRhbCgiZmFpbGVkIHRvIHNlbmQgcXVlcnk6ICVzIiwKKwkJCQkJIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKKwlpZiAoUFFzZW5kRmx1c2hSZXF1ZXN0KGNvbm4pICE9IDEpCisJ CXBnX2ZhdGFsKCJmYWlsZWQgdG8gc2VuZCBmbHVzaCByZXF1ZXN0Iik7CisJcmVzID0gUFFn ZXRSZXN1bHQoY29ubik7CisJaWYgKHJlcyA9PSBOVUxMKQorCQlwZ19mYXRhbCgidW5leHBl Y3RlZCBOVUxMIik7CisJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVT X09LKQorCQlwZ19mYXRhbCgiRXhwZWN0ZWQgUEdSRVNfVFVQTEVTX09LLCBnb3QgJXMiLAor CQkJCSBQUXJlc1N0YXR1cyhQUXJlc3VsdFN0YXR1cyhyZXMpKSk7CisJaWYgKFBRZ2V0UmVz dWx0KGNvbm4pICE9IE5VTEwpCisJCXBnX2ZhdGFsKCJleHBlY3RlZCBOVUxMIHJlc3VsdCIp OworCiAJaWYgKFBRZXhpdFBpcGVsaW5lTW9kZShjb25uKSAhPSAxKQogCQlwZ19mYXRhbCgi ZmFpbGVkIHRvIGVuZCBwaXBlbGluZSBtb2RlOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90cmFj ZXMvc2luZ2xlcm93LnRyYWNlIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS90 cmFjZXMvc2luZ2xlcm93LnRyYWNlCmluZGV4IDlkZTk5YmVmY2MuLjgzMDQzZTE0MDcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvdHJhY2VzL3Npbmds ZXJvdy50cmFjZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL3RyYWNl cy9zaW5nbGVyb3cudHJhY2UKQEAgLTM2LDQgKzM2LDI0IEBAIEIJMTIJRGF0YVJvdwkgMSAy ICc0NScKIEIJMTIJRGF0YVJvdwkgMSAyICc0NicKIEIJMTMJQ29tbWFuZENvbXBsZXRlCSAi U0VMRUNUIDUiCiBCCTUJUmVhZHlGb3JRdWVyeQkgSQorRgkzNglQYXJzZQkgIiIgIlNFTEVD VCBnZW5lcmF0ZV9zZXJpZXMoMCwgMCkiIDAKK0YJMTQJQmluZAkgIiIgIiIgMCAwIDEgMAor Rgk2CURlc2NyaWJlCSBQICIiCitGCTkJRXhlY3V0ZQkgIiIgMAorRgk0CUZsdXNoCitCCTQJ UGFyc2VDb21wbGV0ZQorQgk0CUJpbmRDb21wbGV0ZQorQgk0MAlSb3dEZXNjcmlwdGlvbgkg MSAiZ2VuZXJhdGVfc2VyaWVzIiBOTk5OIDAgTk5OTiA0IC0xIDAKK0IJMTEJRGF0YVJvdwkg MSAxICcwJworQgkxMwlDb21tYW5kQ29tcGxldGUJICJTRUxFQ1QgMSIKK0YJMTYJUGFyc2UJ ICIiICJTRUxFQ1QgMSIgMAorRgkxNAlCaW5kCSAiIiAiIiAwIDAgMSAwCitGCTYJRGVzY3Jp YmUJIFAgIiIKK0YJOQlFeGVjdXRlCSAiIiAwCitGCTQJRmx1c2gKK0IJNAlQYXJzZUNvbXBs ZXRlCitCCTQJQmluZENvbXBsZXRlCitCCTMzCVJvd0Rlc2NyaXB0aW9uCSAxICI/Y29sdW1u PyIgTk5OTiAwIE5OTk4gNCAtMSAwCitCCTExCURhdGFSb3cJIDEgMSAnMScKK0IJMTMJQ29t bWFuZENvbXBsZXRlCSAiU0VMRUNUIDEiCiBGCTQJVGVybWluYXRlCi0tIAoyLjMwLjIKCg== --------------3PBKqFaVRrlNmYJ0JrJVloC5--