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 1qMJD1-0025bA-8I for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jul 2023 02:16:03 +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 1qMJCz-00FFVY-9M for pgsql-hackers@arkaria.postgresql.org; Thu, 20 Jul 2023 02:16:01 +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 1qMJCy-00FFVP-VW for pgsql-hackers@lists.postgresql.org; Thu, 20 Jul 2023 02:16:00 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qMJCu-000YaJ-83 for pgsql-hackers@lists.postgresql.org; Thu, 20 Jul 2023 02:16:00 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 3CBAD607B9 for ; Thu, 20 Jul 2023 11:15:51 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_a296a31c9fe9f3550cd3883fd43dbc70" Content-Transfer-Encoding: 7bit Date: Thu, 20 Jul 2023 11:15:51 +0900 From: Masahiro Ikeda To: pgsql-hackers@lists.postgresql.org Subject: Support worker_spi to execute the function dynamically. User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: ikedamsh@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_a296a31c9fe9f3550cd3883fd43dbc70 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi, While I'm working on the thread[1], I found that the function of worker_spi module fails if 'shared_preload_libraries' doesn't have worker_spi. The reason is that the database name is NULL because the database name is initialized only when process_shared_preload_libraries_in_progress is true. ``` psql=# SELECT worker_spi_launch(1) ; 2023-07-20 11:00:56.491 JST [1179891] LOG: worker_spi worker 1 initialized with schema1.counted 2023-07-20 11:00:56.491 JST [1179891] FATAL: cannot read pg_class without having selected a database at character 22 2023-07-20 11:00:56.491 JST [1179891] QUERY: select count(*) from pg_namespace where nspname = 'schema1' 2023-07-20 11:00:56.491 JST [1179891] STATEMENT: select count(*) from pg_namespace where nspname = 'schema1' 2023-07-20 11:00:56.492 JST [1179095] LOG: background worker "worker_spi" (PID 1179891) exited with exit code 1 ``` In my understanding, the restriction is not required. So, I think it's better to change the behavior. (v1-0001-Support-worker_spi-to-execute-the-function-dynamical.patch) What do you think? [1] Support to define custom wait events for extensions https://www.postgresql.org/message-id/flat/b9f5411acda0cf15c8fbb767702ff43e%40oss.nttdata.com Regards, -- Masahiro Ikeda NTT DATA CORPORATION --=_a296a31c9fe9f3550cd3883fd43dbc70 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v1-0001-Support-worker_spi-to-execute-the-function-dynamical.patch Content-Disposition: attachment; filename*0*=UTF-8''v1-0001-Support-worker_spi-to-execute-the-function-dyn; filename*1*=amical.patch; size=1745 RnJvbSBjNmU2MGM2NmM0MDY2YjRhMDE5ODFmZmFlNWExNjg5MDFlNzI4M2ViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlybyBJa2VkYSA8bWFzYWhpcm8uaWtlZGEudXNAaGNv Lm50dC5jby5qcD4KRGF0ZTogVGh1LCAyMCBKdWwgMjAyMyAxMDozNDo1MCArMDkwMApTdWJqZWN0 OiBbUEFUQ0hdIFN1cHBvcnQgd29ya2VyX3NwaSB0byBleGVjdXRlIHRoZSBmdW5jdGlvbiBkeW5h bWljYWxseS4KCkN1cnJlbnRseSwgdGhlIGRhdGFiYXNlIG5hbWUgdG8gY29ubmVjdCBpcyBpbml0 aWFsaXplZCBvbmx5CndoZW4gcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJv Z3Jlc3MgaXMgdHJ1ZS4KSXQgbWVhbnMgdGhhdCB3b3JrZXJfc3BpX2xhdW5jaCgpIGZhaWxzIGlm IHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcwppcyBlbXB0eSBiZWNhdXNlIHRoZSBkYXRhYmFzZSB0 byBjb25uZWN0IGlzIE5VTEwuCgpUaGUgcGF0Y2ggY2hhbmdlcyB0aGF0IHRoZSBkYXRhYmFzZSBu YW1lIGlzIGFsd2F5cyBpbml0aWxpemVkCndoZW4gY2FsbGVkIF9QR19pbml0KCkuIFdlIGNhbiBj YWxsIHdvcmtlcl9zcGlfbGF1bmNoKCkgYW5kCmxhdW5jaCBTUEkgd29ya2VycyBkeW5hbWljYWxs eS4KLS0tCiBzcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jIHwgMTggKysr KysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2VyX3NwaS93b3JrZXJf c3BpLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3dvcmtlcl9zcGkvd29ya2VyX3NwaS5jCmluZGV4IDcy MjdjZmFhNDUuLmNjYzM4YTM2ZDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvd29ya2Vy X3NwaS93b3JrZXJfc3BpLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy93b3JrZXJfc3BpL3dvcmtl cl9zcGkuYwpAQCAtMjk2LDYgKzI5NiwxNSBAQCBfUEdfaW5pdCh2b2lkKQogCQkJCQkJCU5VTEws CiAJCQkJCQkJTlVMTCk7CiAKKwlEZWZpbmVDdXN0b21TdHJpbmdWYXJpYWJsZSgid29ya2VyX3Nw aS5kYXRhYmFzZSIsCisJCQkJCQkJICAgIkRhdGFiYXNlIHRvIGNvbm5lY3QgdG8uIiwKKwkJCQkJ CQkgICBOVUxMLAorCQkJCQkJCSAgICZ3b3JrZXJfc3BpX2RhdGFiYXNlLAorCQkJCQkJCSAgICJw b3N0Z3JlcyIsCisJCQkJCQkJICAgUEdDX1NJR0hVUCwKKwkJCQkJCQkgICAwLAorCQkJCQkJCSAg IE5VTEwsIE5VTEwsIE5VTEwpOworCiAJaWYgKCFwcm9jZXNzX3NoYXJlZF9wcmVsb2FkX2xpYnJh cmllc19pbl9wcm9ncmVzcykKIAkJcmV0dXJuOwogCkBAIC0zMTIsMTUgKzMyMSw2IEBAIF9QR19p bml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKIAotCURlZmluZUN1c3RvbVN0 cmluZ1ZhcmlhYmxlKCJ3b3JrZXJfc3BpLmRhdGFiYXNlIiwKLQkJCQkJCQkgICAiRGF0YWJhc2Ug dG8gY29ubmVjdCB0by4iLAotCQkJCQkJCSAgIE5VTEwsCi0JCQkJCQkJICAgJndvcmtlcl9zcGlf ZGF0YWJhc2UsCi0JCQkJCQkJICAgInBvc3RncmVzIiwKLQkJCQkJCQkgICBQR0NfUE9TVE1BU1RF UiwKLQkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwsIE5VTEwsIE5VTEwpOwotCiAJTWFya0dV Q1ByZWZpeFJlc2VydmVkKCJ3b3JrZXJfc3BpIik7CiAKIAkvKiBzZXQgdXAgY29tbW9uIGRhdGEg Zm9yIGFsbCBvdXIgd29ya2VycyAqLwotLSAKMi4yNS4xCgo= --=_a296a31c9fe9f3550cd3883fd43dbc70--