Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wZzp9-001SSA-2o for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 23:37:36 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZzp8-008G1B-1t for pgsql-hackers@arkaria.postgresql.org; Wed, 17 Jun 2026 23:37:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wZzp8-008G12-0c for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 23:37:34 +0000 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wZzp6-00000000zqu-0YWm for pgsql-hackers@lists.postgresql.org; Wed, 17 Jun 2026 23:37:33 +0000 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45fe59255beso203570f8f.1 for ; Wed, 17 Jun 2026 16:37:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1781739451; cv=none; d=google.com; s=arc-20240605; b=ViL4b2qTzjwL5E2dSPQI7U/83aDt1ooN2C9DPBy/i2VEJLDWcdQsh6cxlMkVfM3gtP S4Y4JehtjfrtfOFwtK1k2N1XCaGozheJjxs8g3qXTIQ066Nh8wGMPq68uKITAC3mm97V FeWGAcRICKw5wNoF27VAutCfP1IZS05nrEtiAX5GaOTCS+GYN+3LXJMs+zpxb2nfePjq dX7PcOTi9ChVwa30oMFAj5WZoXEgIwosp8L7eP44Zyuw148dBXF+u7oZqRbTVyW2s0xq 3oPkE9kuWNHAhl4t880XGlquIl5nRxLyX2qCnlrt2rHbjMzXezcvKYXhIg4Wus3yz/S4 O9Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=18Xsy/APaVdZVJ3HVQMwt6eQr2IjIZGR1mQjVSe2ivw=; fh=bZEXakdoeCRGVrxV14/LFxUoDRk2Gu2wMqC8lvw1uN4=; b=VQoO2T4pJdHqCKs5uaxhGkOqhQgP8jR1oQmpSyiEh+y5tRh916V2Hcw4RyotspkFg0 Qos1o/LSpJxkdmAPBHgwHyHtoUvJ63sDk+Tbs45sI1CgEgpa/tGyMXDDfSrLIob7T1qr k9VRCaGdnpdGrPnz2bkU5s9XOQdXwLfwtRvfz/rsW14IUCjZEScNr7/jL+0FH1buhb4t nAzus2T2xQvcoDOyyAEYRp2+PWMcpKWGORxvE9UusjFOtW3J4EwgWVPapCzqkF/HnAjL CokjPVdsCwfmfQKG9xVfM28uO2lpcv4IeVhXg6XJQ2OmYlb7pjfUSOFgAmJtAUeSfLGs kStA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781739451; x=1782344251; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=18Xsy/APaVdZVJ3HVQMwt6eQr2IjIZGR1mQjVSe2ivw=; b=cibqySMF87xdJ9mwbUqs6HuPYCC4Ioby6PMOFTcxtBVt2nJwElOvqVF0Hz2bflHOAr uGpHcQu1yl6EyQ08XRKRZyKyuB6JMvVDzba7Hu2zKP2LbYJW1SuV/tjDHNBJ5Xn93IZj grErLztTfYu4wdqrMmoZpmuWhTL58Gx7aY5O/T/Smfp28wpwMJPXFeG3R1xyo+esmbBQ nh/nJVf8TZ3qlpsFjq9uHh9qyR0Gvw1QP5Zonk0zVsubcQIlI1CNQmw0bC6jP/IzyAzq 6yUHUvBcYWTGy2jtt67qTENruBKF9lBfYjZPyIhDnJ7QShV0XHZw4dLQAiT3N0p5hq6M 3zNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781739451; x=1782344251; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=18Xsy/APaVdZVJ3HVQMwt6eQr2IjIZGR1mQjVSe2ivw=; b=CgIVm/xSs0Kch+MBUu80jY/VvGdF2GJA09T8udCNPnet7NcJS4RK1xhpLcjN6xSYBt gvAYEbA34R9GeKX/i7tpercb0bUmWlzuW3EC6fidQoclx807y0aNDdSiQNsX7zaUoi8G 46dCd0qtTVe0+GcFJNUNOdFTP4VV1zNg2lah3ssZqUvWf5lWfFdxVz8HNhy3ohloy7We XLWNiBTHYDpr0F7Kq1p7vLDue7fttldqgGwcU4E7BGMSJ3ULAPpYYenxI3CDLwi8ab4j sJYtCUderEhuTpEGyOCPr6kRZSBw2EYvmo8kXlgxv5BMrHmZQ8WbJJdjpOeEvPp8SHih EfeQ== X-Forwarded-Encrypted: i=1; AFNElJ+6ameE91b0WEdGPZwW/c5TVluqF6LL059nJdPemuHB2sOlPZ+DAZY0IGvkRZpifieFMu2LEcScB8rg1rT2@lists.postgresql.org X-Gm-Message-State: AOJu0Yxq1sK06fvun9CmC9Z11hsO9ngvvAB4Y+D2s2S9t8QLD+OmgpIY zJTWnNr5447nV4dK60CEijkpgT6DjQATdYtqYv+eABDS4CVY52CvuOIMV7pM1y1xZAneJ2MKVy0 /EVhGJQlMoe39x1Hv3hzqHAU4rGEc/nA= X-Gm-Gg: AfdE7cksyxNnnkyB/aTycpGwAqarfk2PhymzRSu+W+kn1NDY/34ir9a1O2PG8O7r6+I 6c7cK80Cewc0MZ/WD+P6WU30nODgjtR127pjwRgoGJPZOH1Rr1uo9XGNjiaVP72vco9dLsaccII HFL6pDJBEBDrkX0Dd2244UwjqmFqqU6uIMargREQaJWgw99ho47sdXXKxrS9wT7N3grhxlJrVkX Ny8NwKM35a8uUIzKhYmaB4nBp01otrJOBTdfKAOIBLLhdXGbGqBLz49zThEonFh6PhVL9aXfDA2 eCjVGVo8orElUGx+p+S6ZpoIFYHkMBOt3L9NkARmtxkiw03HoQ0x0bzURLZi X-Received: by 2002:a05:6000:4b0f:b0:43e:aa88:f1a1 with SMTP id ffacd0b85a97d-462416a5023mr9596907f8f.30.1781739450485; Wed, 17 Jun 2026 16:37:30 -0700 (PDT) MIME-Version: 1.0 References: <1151393.1781734980@sss.pgh.pa.us> <1174236.1781736349@sss.pgh.pa.us> In-Reply-To: From: David Rowley Date: Thu, 18 Jun 2026 11:37:18 +1200 X-Gm-Features: AVVi8Cea_cUNNsSonGmtYoh_8R9P66sg9IP5HVlyMyc-yiFnubFKFX1bu1LP9PM Message-ID: Subject: Re: Fix tuple deformation with virtual generated NOT NULL columns To: Tom Lane Cc: Chao Li , Peter Eisentraut , Andres Freund , Postgres hackers Content-Type: multipart/mixed; boundary="0000000000000767a706547b8b34" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000767a706547b8b34 Content-Type: text/plain; charset="UTF-8" On Thu, 18 Jun 2026 at 11:06, David Rowley wrote: > Just starting to look now, but I suspect that this code in > llvmjit_deform.c needs to be updated now that we have virtual > generated columns. I've not fully processed all this code yet. I've still not worked out why the loop that sets guaranteed_column_number doesn't break when it finds something non-guaranteed. Here's a draft patch I was experimenting with. It seems to fix the issue. I need to spend more time to check it's correct. David --0000000000000767a706547b8b34 Content-Type: text/plain; charset="US-ASCII"; name="fix_jit_deform_for_virtual_generated_cols.patch" Content-Disposition: attachment; filename="fix_jit_deform_for_virtual_generated_cols.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqipn66n0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZGVmb3JtLmMgYi9zcmMv YmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2RlZm9ybS5jCmluZGV4IDEyNTIxZTNlNDZhLi42MmE3 ZTFjMzdmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9kZWZvcm0u YworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2RlZm9ybS5jCkBAIC0xMDksMjIg KzEwOSwyNyBAQCBzbG90X2NvbXBpbGVfZGVmb3JtKExMVk1KaXRDb250ZXh0ICpjb250ZXh0LCBU dXBsZURlc2MgZGVzYywKIAkgKi8KIAlmb3IgKGF0dG51bSA9IDA7IGF0dG51bSA8IGRlc2MtPm5h dHRzOyBhdHRudW0rKykKIAl7Ci0JCUNvbXBhY3RBdHRyaWJ1dGUgKmF0dCA9IFR1cGxlRGVzY0Nv bXBhY3RBdHRyKGRlc2MsIGF0dG51bSk7CisJCUNvbXBhY3RBdHRyaWJ1dGUgKmNhdHQgPSBUdXBs ZURlc2NDb21wYWN0QXR0cihkZXNjLCBhdHRudW0pOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRy ID0gVHVwbGVEZXNjQXR0cihkZXNjLCBhdHRudW0pOwogCiAJCS8qCiAJCSAqIElmIHRoZSBjb2x1 bW4gaXMgZGVjbGFyZWQgTk9UIE5VTEwgdGhlbiBpdCBtdXN0IGJlIHByZXNlbnQgaW4gZXZlcnkK IAkJICogdHVwbGUsIHVubGVzcyB0aGVyZSdzIGEgIm1pc3NpbmciIGVudHJ5IHRoYXQgY291bGQg cHJvdmlkZSBhCi0JCSAqIG5vbi1OVUxMIHZhbHVlIGZvciBpdC4gVGhhdCBpbiB0dXJuIGd1YXJh bnRlZXMgdGhhdCB0aGUgTlVMTCBiaXRtYXAKLQkJICogLSBpZiB0aGVyZSBhcmUgYW55IE5VTExh YmxlIGNvbHVtbnMgLSBpcyBhdCBsZWFzdCBsb25nIGVub3VnaCB0bwotCQkgKiBjb3ZlciBjb2x1 bW5zIHVwIHRvIGF0dG51bS4KKwkJICogbm9uLU5VTEwgdmFsdWUgZm9yIGl0IG9yIHRoZSBjb2x1 bW4gaXMgYSB2aXJ0dWFsIGdlbmVyYXRlZCBjb2x1bW4uCisJCSAqIFRoYXQgaW4gdHVybiBndWFy YW50ZWVzIHRoYXQgdGhlIE5VTEwgYml0bWFwIC0gaWYgdGhlcmUgYXJlIGFueQorCQkgKiBOVUxM YWJsZSBjb2x1bW5zIC0gaXMgYXQgbGVhc3QgbG9uZyBlbm91Z2ggdG8gY292ZXIgY29sdW1ucyB1 cCB0bworCQkgKiBhdHRudW0uCiAJCSAqCiAJCSAqIEJlIHBhcmFub2lkIGFuZCBhbHNvIGNoZWNr ICFhdHRpc2Ryb3BwZWQsIGV2ZW4gdGhvdWdoIHRoZQogCQkgKiBjb21iaW5hdGlvbiBvZiBhdHRp c2Ryb3BwZWQgJiYgYXR0bm90bnVsbCBjb21iaW5hdGlvbiBzaG91bGRuJ3QKIAkJICogZXhpc3Qu CiAJCSAqLwotCQlpZiAoYXR0LT5hdHRudWxsYWJpbGl0eSA9PSBBVFROVUxMQUJMRV9WQUxJRCAm JgotCQkJIWF0dC0+YXR0aGFzbWlzc2luZyAmJgotCQkJIWF0dC0+YXR0aXNkcm9wcGVkKQorCQlp ZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKKwkJ CWJyZWFrOworCisJCWlmIChjYXR0LT5hdHRudWxsYWJpbGl0eSA9PSBBVFROVUxMQUJMRV9WQUxJ RCAmJgorCQkJIWNhdHQtPmF0dGhhc21pc3NpbmcgJiYKKwkJCSFjYXR0LT5hdHRpc2Ryb3BwZWQp CiAJCQlndWFyYW50ZWVkX2NvbHVtbl9udW1iZXIgPSBhdHRudW07CiAJfQogCkBAIC0zOTIsNiAr Mzk3LDggQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZNSml0Q29udGV4dCAqY29udGV4dCwgVHVw bGVEZXNjIGRlc2MsCiAJZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCBuYXR0czsgYXR0bnVtKysp CiAJewogCQlDb21wYWN0QXR0cmlidXRlICphdHQgPSBUdXBsZURlc2NDb21wYWN0QXR0cihkZXNj LCBhdHRudW0pOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihkZXNj LCBhdHRudW0pOworCiAJCUxMVk1WYWx1ZVJlZiB2X2luY2J5OwogCQlpbnQJCQlhbGlnbnRvID0g YXR0LT5hdHRhbGlnbmJ5OwogCQlMTFZNVmFsdWVSZWYgbF9hdHRubyA9IGxfaW50MTZfY29uc3Qo bGMsIGF0dG51bSk7CkBAIC00MzYsNyArNDQzLDggQEAgc2xvdF9jb21waWxlX2RlZm9ybShMTFZN Sml0Q29udGV4dCAqY29udGV4dCwgVHVwbGVEZXNjIGRlc2MsCiAJCSAqIGludG8gYWNjb3VudCwg YmVjYXVzZSBpZiB0aGV5J3JlIHByZXNlbnQgdGhlIGhlYXB0dXBsZSdzIG5hdHRzCiAJCSAqIHdv dWxkIGhhdmUgaW5kaWNhdGVkIHRoYXQgYSBzbG90X2dldG1pc3NpbmdhdHRycygpIGlzIG5lZWRl ZC4KIAkJICovCi0JCWlmIChhdHQtPmF0dG51bGxhYmlsaXR5ICE9IEFUVE5VTExBQkxFX1ZBTElE KQorCQlpZiAoYXR0LT5hdHRudWxsYWJpbGl0eSAhPSBBVFROVUxMQUJMRV9WQUxJRCB8fAorCQkJ YXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9HRU5FUkFURURfVklSVFVBTCkKIAkJewog CQkJTExWTUJhc2ljQmxvY2tSZWYgYl9pZm5vdG51bGw7CiAJCQlMTFZNQmFzaWNCbG9ja1JlZiBi X2lmbnVsbDsKQEAgLTYxNCw2ICs2MjIsNyBAQCBzbG90X2NvbXBpbGVfZGVmb3JtKExMVk1KaXRD b250ZXh0ICpjb250ZXh0LCBUdXBsZURlc2MgZGVzYywKIAkJCWtub3duX2FsaWdubWVudCArPSBh dHQtPmF0dGxlbjsKIAkJfQogCQllbHNlIGlmIChhdHQtPmF0dG51bGxhYmlsaXR5ID09IEFUVE5V TExBQkxFX1ZBTElEICYmCisJCQkJIGF0dHItPmF0dGdlbmVyYXRlZCAhPSBBVFRSSUJVVEVfR0VO RVJBVEVEX1ZJUlRVQUwgJiYKIAkJCQkgKGF0dC0+YXR0bGVuICUgYWxpZ250bykgPT0gMCkKIAkJ ewogCQkJLyoK --0000000000000767a706547b8b34--