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.94.2) (envelope-from ) id 1t3SiL-00Cei7-82 for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Oct 2024 04:11:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1t3SiJ-005yL4-6l for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Oct 2024 04:11:15 +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.94.2) (envelope-from ) id 1t3SiI-005yKu-QP for pgsql-hackers@lists.postgresql.org; Wed, 23 Oct 2024 04:11:15 +0000 Received: from mail-ej1-x631.google.com ([2a00:1450:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1t3SiG-002V7c-KT for pgsql-hackers@lists.postgresql.org; Wed, 23 Oct 2024 04:11:14 +0000 Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-a99ebb390a5so76569766b.1 for ; Tue, 22 Oct 2024 21:11:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec.at; s=cybertec.at; t=1729656671; x=1730261471; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=WU0DKkpOcI0Hy72Zg5vXAkOckMFK9O8ERsGXFyHp2vM=; b=fzxH3MYJa66pJpmXHptWI7rcQf/EyebmliEI8UM+tVD4goWh+NMv4JBGuCzwG20Kee eUyAnAdiGt0SuSC6vVIFU9P8g+pgaQg/3KJTFrqg4T2UerM9QhP8zuYMFaY3RGU4H37Q kK4tY69r/DYJuv1rJm8LZrnQ56aU0kgFOYY8c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729656671; x=1730261471; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WU0DKkpOcI0Hy72Zg5vXAkOckMFK9O8ERsGXFyHp2vM=; b=k9KcQ2fSwgLDCVyzxRklkdgLwlhtBvOcHVTbvlbZbD9T2630x+4+KV2E5xiNct5pQI m4pqFxgt8yU8MqxuiZIgoCDTY1f5lAAaFNg4JaMzMzDmygi8KbcrSU5w8QcNmsbTMDZL SiMkI12z4zozL28GD7hjNV2SD2M3IgD3cnJsBXN4a4mwi7B1wfTzi7SDj1KJpGCAuwdG KvxPoCoB42yvI/gYw7mNDNVFyf/jaRikVsj6V7BLbJw0LGuIOgSFNXZToU3jSKD5Xe3+ 3TYtPnE+Df9lLOHYuw9r01Q7LbNaY9iGfGXzRNqmckVp92Grf+7zE5n5E5B5TYi3aW5r +JYQ== X-Forwarded-Encrypted: i=1; AJvYcCV+gRTpUkKUu9aA97dKW6tzeanJEhs4+saM6zHw6OVP/76kZnQkB/b9J7FxFjUH15AyUHIMlSXm4oLt6IoH@lists.postgresql.org X-Gm-Message-State: AOJu0YxY4W8+1OcHTkdc9QFU9m+sAXuoLuSB8UVW63mpb9XYhGW15l1G 2dPKkk+sztPSUMazX7RDVwGz4WtRyw85PkkI9r84s2olEDs9uoXE8NARB1az+m8= X-Google-Smtp-Source: AGHT+IE1wAZDaDESL5pZipW3Mz4WsEQ0G7aFefSx9Ez1JVijUXWJDz/kLGC3POR8q2BuhUXnInHmuQ== X-Received: by 2002:a17:906:f585:b0:a9a:85b5:2aca with SMTP id a640c23a62f3a-a9aaa4f4e7fmr574839866b.7.1729656670524; Tue, 22 Oct 2024 21:11:10 -0700 (PDT) Received: from localhost.localdomain (86.73.73.85.static.otenet.gr. [85.73.73.86]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a9a91370e33sm416531066b.120.2024.10.22.21.11.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Oct 2024 21:11:09 -0700 (PDT) Message-ID: Subject: Re: proposal: schema variables From: Laurenz Albe To: Pavel Stehule Cc: Erik Rijkers , Michael Paquier , Amit Kapila , DUVAL REMI , PostgreSQL Hackers Date: Wed, 23 Oct 2024 07:11:08 +0300 In-Reply-To: References: <20200924035637.GF28585@paquier.xyz> <20201001033824.GC8130@paquier.xyz> <51a9a68e8a998d04df17417d45c1dbd4@xs4all.nl> <89817942c99da01cd5e7850fe418436b@xs4all.nl> <56ca532c37eb0b540961f74a7bd5db39@xs4all.nl> <8181bd3abc647bdae5a4f78e71e62478a98c75f4.camel@cybertec.at> <9e67d49deb18270eddb95e602c83f02b98459843.camel@cybertec.at> <3b662dc5b615d4c20a55e8e2fbe6fc00fe00609d.camel@cybertec.at> <6996931e8c9edf3b82223e74e92326a7ed06c1d6.camel@cybertec.at> <67aa68a7e6dfb44c0cbbdf7f97cadfede4269ce5.camel@cybertec.at> <04ec666686e9e21cb515617df06885c66f3d34ce.camel@cybertec.at> <3850a85012d040827b10193189edbe2c23a64f8f.camel@cybertec.at> Content-Type: multipart/mixed; boundary="=-l9b3NPwqVGoLTkPLMpwx" User-Agent: Evolution 3.52.4 (3.52.4-1.fc40) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-l9b3NPwqVGoLTkPLMpwx Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable I have gone over patch 3 from the set and worked on the comments. Apart from that, I have modified your patch as follows: > +/* > + * pg_session_variables - designed for testing > + * > + * This is a function designed for testing and debugging. It returns th= e > + * content of sessionvars as-is, and can therefore display entries about > + * session variables that were dropped but for which this backend didn't > + * process the shared invalidations yet. > + */ > +Datum > +pg_session_variables(PG_FUNCTION_ARGS) > +{ > +#define NUM_PG_SESSION_VARIABLES_ATTS 8 > + > + elog(DEBUG1, "pg_session_variables start"); I don't think that message is necessary, particularly with DEBUG1. I have removed this message and the "end" message as well. > + while ((svar =3D (SVariable) hash_seq_search(&status)) !=3D NULL) > + { > + Datum values[NUM_PG_SESSION_VARIABLES_ATTS]; > + bool nulls[NUM_PG_SESSION_VARIABLES_ATTS]; > + HeapTuple tp; > + bool var_is_valid =3D false; > + > + memset(values, 0, sizeof(values)); > + memset(nulls, 0, sizeof(nulls)); Instead of explicitly zeroing out the arrays, I have used an empty initiali= zer in the definition, like bool nulls[NUM_PG_SESSION_VARIABLES_ATTS] =3D {}; That should have the same effect. If you don't like that, I have no real problem with your original code. > + values[0] =3D ObjectIdGetDatum(svar->varid); > + values[3] =3D ObjectIdGetDatum(svar->typid); You are using the type ID without checking if it exists in the catalog. I think that is a bug. There is a dependency between the variable and the type, but if a concurren= t session drops both the variable and the data type, the non-existing type ID would still show up in the function output. Even worse, the OID could have been reused for a different type since. I am attaching just patch number 3 and leave you to adapt the patch set, but I don't think any of the other patches should be affected. Yours, Laurenz Albe --=-l9b3NPwqVGoLTkPLMpwx Content-Disposition: attachment; filename*0=v20241023-0003-function-pg_session_variables-for-cleanin.patc; filename*1=h Content-Type: text/x-patch; name="v20241023-0003-function-pg_session_variables-for-cleanin.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MjJkMGI2NzkzYjg4OTUxY2QyNGE1NmFiNDVmNWQ3Njk5ZTcwYzZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogV2VkLCAyMyBPY3QgMjAyNCAwNjo1NjowMiArMDMwMApTdWJqZWN0OiBbUEFUQ0gg dnYyMDI0MTAyM10gZnVuY3Rpb24gcGdfc2Vzc2lvbl92YXJpYWJsZXMgZm9yIGNsZWFuaW5nIHRl c3RzCgpUaGlzIGlzIGEgZnVuY3Rpb24gZGVzaWduZWQgZm9yIHRlc3RpbmcgYW5kIGRlYnVnZ2lu Zy4gIEl0IHJldHVybnMgdGhlCmNvbnRlbnQgb2Ygc2Vzc2lvbnZhcnMgYXMtaXMsIGFuZCBjYW4g dGhlcmVmb3JlIGRpc3BsYXkgZW50cmllcyBhYm91dApzZXNzaW9uIHZhcmlhYmxlcyB0aGF0IHdl cmUgZHJvcHBlZCBidXQgZm9yIHdoaWNoIHRoaXMgYmFja2VuZCBkaWRuJ3QKcHJvY2VzcyB0aGUg c2hhcmVkIGludmFsaWRhdGlvbnMgeWV0LgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICB8ICA4ICsrKwogMiBmaWxlcyBjaGFuZ2VkLCA5 NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lv bl92YXJpYWJsZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCmlu ZGV4IDU0OGQ5ODM1YzBkLi4xOWY3NzJhOWZiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2Vzc2lvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Nlc3Np b25fdmFyaWFibGUuYwpAQCAtNTY5LDMgKzU2OSw5MiBAQCBFeGVjdXRlTGV0U3RtdChQYXJzZVN0 YXRlICpwc3RhdGUsCiAKIAlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQorCisvKgorICogcGdfc2Vz c2lvbl92YXJpYWJsZXMgLSBkZXNpZ25lZCBmb3IgdGVzdGluZworICoKKyAqIFRoaXMgaXMgYSBm dW5jdGlvbiBkZXNpZ25lZCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLiAgSXQgcmV0dXJucyB0 aGUKKyAqIGNvbnRlbnQgb2Ygc2Vzc2lvbiB2YXJpYWJsZXMgYXMtaXMsIGFuZCBjYW4gdGhlcmVm b3JlIGRpc3BsYXkgZGF0YSBhYm91dAorICogc2Vzc2lvbiB2YXJpYWJsZXMgdGhhdCB3ZXJlIGRy b3BwZWQsIGJ1dCBmb3Igd2hpY2ggdGhpcyBiYWNrZW5kIGRpZG4ndAorICogcHJvY2VzcyB0aGUg c2hhcmVkIGludmFsaWRhdGlvbnMgeWV0LgorICovCitEYXR1bQorcGdfc2Vzc2lvbl92YXJpYWJs ZXMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNkZWZpbmUgTlVNX1BHX1NFU1NJT05fVkFSSUFCTEVT X0FUVFMgOAorCisJSW5pdE1hdGVyaWFsaXplZFNSRihmY2luZm8sIDApOworCisJaWYgKHNlc3Np b252YXJzKQorCXsKKwkJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikg ZmNpbmZvLT5yZXN1bHRpbmZvOworCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCQlTVmFyaWFi bGUJc3ZhcjsKKworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHNlc3Npb252YXJzKTsKKworCQl3 aGlsZSAoKHN2YXIgPSAoU1ZhcmlhYmxlKSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5V TEwpCisJCXsKKwkJCURhdHVtCQl2YWx1ZXNbTlVNX1BHX1NFU1NJT05fVkFSSUFCTEVTX0FUVFNd ID0ge307CisJCQlib29sCQludWxsc1tOVU1fUEdfU0VTU0lPTl9WQVJJQUJMRVNfQVRUU10gPSB7 fTsKKwkJCUhlYXBUdXBsZQl0cDsKKwkJCWJvb2wJCXZhcl9pc192YWxpZCA9IGZhbHNlOworCisJ CQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHN2YXItPnZhcmlkKTsKKwkJCXZhbHVlc1sz XSA9IE9iamVjdElkR2V0RGF0dW0oc3Zhci0+dHlwaWQpOworCisJCQkvKgorCQkJICogSXQgaXMg cG9zc2libGUgdGhhdCB0aGUgdmFyaWFibGUgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZQorCQkJ ICogY2F0YWxvZywgYnV0IG5vdCB5ZXQgcHVyZ2VkIGZyb20gdGhlIGhhc2ggdGFibGUuCisJCQkg Ki8KKwkJCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFZBUklBQkxFT0lELCBPYmplY3RJZEdldERhdHVt KHN2YXItPnZhcmlkKSk7CisKKwkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJCXsKKwkJ CQlGb3JtX3BnX3ZhcmlhYmxlIHZhcmZvcm0gPSAoRm9ybV9wZ192YXJpYWJsZSkgR0VUU1RSVUNU KHRwKTsKKworCQkJCS8qCisJCQkJICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0IGEgdmFyaWFi bGUgaGFzIGJlZW4gZHJvcHBlZCBhbmQKKwkJCQkgKiBzb21lb25lIGNyZWF0ZWQgYSBuZXcgdmFy aWFibGUgd2l0aCB0aGUgc2FtZSBvYmplY3QgSUQuICBVc2UKKwkJCQkgKiB0aGUgY2F0YWxvZyBp bmZvcm1hdGlvbiBvbmx5IGlmIHRoYXQgaXMgbm90IHRoZSBjYXNlLgorCQkJCSAqLworCQkJCWlm IChzdmFyLT5jcmVhdGVfbHNuID09IHZhcmZvcm0tPnZhcmNyZWF0ZV9sc24pCisJCQkJeworCQkJ CQl2YWx1ZXNbMV0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKAorCQkJCQkJCQkJCQkJCWdldF9uYW1l c3BhY2VfbmFtZSh2YXJmb3JtLT52YXJuYW1lc3BhY2UpKTsKKworCQkJCQl2YWx1ZXNbMl0gPSBD U3RyaW5nR2V0VGV4dERhdHVtKE5hbWVTdHIodmFyZm9ybS0+dmFybmFtZSkpOworCQkJCQl2YWx1 ZXNbNF0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKGZvcm1hdF90eXBlX2JlKHN2YXItPnR5cGlkKSk7 CisJCQkJCXZhbHVlc1s1XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CisKKwkJCQkJdmFsdWVzWzZd ID0gQm9vbEdldERhdHVtKAorCQkJCQkJCQkJCQkgb2JqZWN0X2FjbGNoZWNrKFZhcmlhYmxlUmVs YXRpb25JZCwgc3Zhci0+dmFyaWQsCisJCQkJCQkJCQkJCQkJCQkgR2V0VXNlcklkKCksIEFDTF9T RUxFQ1QpID09IEFDTENIRUNLX09LKTsKKworCQkJCQl2YWx1ZXNbN10gPSBCb29sR2V0RGF0dW0o CisJCQkJCQkJCQkJCSBvYmplY3RfYWNsY2hlY2soVmFyaWFibGVSZWxhdGlvbklkLCBzdmFyLT52 YXJpZCwKKwkJCQkJCQkJCQkJCQkJCSBHZXRVc2VySWQoKSwgQUNMX1VQREFURSkgPT0gQUNMQ0hF Q0tfT0spOworCisJCQkJCXZhcl9pc192YWxpZCA9IHRydWU7CisJCQkJfQorCisJCQkJUmVsZWFz ZVN5c0NhY2hlKHRwKTsKKwkJCX0KKworCQkJLyogaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgY2F0 YWxvZyBlbnRyeSwgcmV0dXJuIG51bGwgdmFsdWVzICovCisJCQlpZiAoIXZhcl9pc192YWxpZCkK KwkJCXsKKwkJCQludWxsc1sxXSA9IHRydWU7CisJCQkJbnVsbHNbMl0gPSB0cnVlOworCQkJCW51 bGxzWzRdID0gdHJ1ZTsKKwkJCQl2YWx1ZXNbNV0gPSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJCQkJ bnVsbHNbNl0gPSB0cnVlOworCQkJCW51bGxzWzddID0gdHJ1ZTsKKwkJCX0KKworCQkJdHVwbGVz dG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVz LCBudWxscyk7CisJCX0KKwl9CisKKwlyZXR1cm4gKERhdHVtKSAwOworfQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKaW5kZXggMDFhMTE4MjM5Y2UuLmY2MGRmNGRiNThmIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTEyMzY2LDQgKzEyMzY2LDEyIEBACiAgIHByb2FyZ3R5cGVzID0+ICdpbnQy JywKICAgcHJvc3JjID0+ICdnaXN0X3N0cmF0bnVtX2lkZW50aXR5JyB9LAogCisjIFNlc3Npb24g dmFyaWFibGVzIHN1cHBvcnQKK3sgb2lkID0+ICc4NDg4JywgZGVzY3IgPT4gJ2xpc3Qgb2YgdXNl ZCBzZXNzaW9uIHZhcmlhYmxlcycsCisgIHByb25hbWUgPT4gJ3BnX3Nlc3Npb25fdmFyaWFibGVz JywgcHJvcm93cyA9PiAnMTAwMCcsIHByb3JldHNldCA9PiAndCcsCisgIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLAorICBwcm9h cmd0eXBlcyA9PiAnJywgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsdGV4dCx0ZXh0LG9pZCx0ZXh0 LGJvb2wsYm9vbCxib29sfScsCisgIHByb2FyZ21vZGVzID0+ICd7byxvLG8sbyxvLG8sbyxvfScs CisgIHByb2FyZ25hbWVzID0+ICd7dmFyaWQsc2NoZW1hLG5hbWUsdHlwaWQsdHlwbmFtZSxyZW1v dmVkLGNhbl9zZWxlY3QsY2FuX3VwZGF0ZX0nLAorICBwcm9zcmMgPT4gJ3BnX3Nlc3Npb25fdmFy aWFibGVzJyB9LAogXQotLSAKMi40Ny4wCgo= --=-l9b3NPwqVGoLTkPLMpwx--