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 1n8HgB-0004rI-Ff for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jan 2022 08:11:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n8HgA-0007R6-6O for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jan 2022 08:11:22 +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 1n8Hg9-0007QK-FM for pgsql-hackers@lists.postgresql.org; Fri, 14 Jan 2022 08:11:21 +0000 Received: from smtp58.i.mail.ru ([217.69.128.38]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n8Hg0-0004au-A8 for pgsql-hackers@lists.postgresql.org; Fri, 14 Jan 2022 08:11:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=inbox.ru; s=mail4; h=Content-Type:MIME-Version:Date:Message-ID:Subject:From:To:From:Subject:Content-Type:Content-Transfer-Encoding:To:Cc; bh=6m2AdnHKwciGt4tPOU8gTRToEeozZIQZrVkXBVHoqO0=; t=1642147872;x=1642753272; b=WWBMB1LYkFxq5Y5J47TUDcUhj8/aTlL/w5u0fwZIKqc0jJMFvtMZLb8uAQ4JqEK5AStQ26qQmCym1kN7E2Be8lSft8irNwzyhP7xxMfi35FPhKU7n45Cm0ckf3IigzXyEaUarpO9c/dmJETMDSV/OxaCtsezEYR7OXsqM3xum2OyVpWwCh2l7OSjRe/aspZUA3fW9+nKMJuEpx/tXR4qypAmTPU6YQRkio9XDRrCI+IRQICHGqPDBttf3l1RhUDbOl9FHChUJySttQr/uVu2c2RLMJP+BPRXaT4LLLoes/4G7VLeX4X62gN1vp02Qrw8KMBXXlZMkg+J4ANNVC1Iog==; Received: by smtp58.i.mail.ru with esmtpa (envelope-from ) id 1n8Hfw-0004mm-DA for pgsql-hackers@lists.postgresql.org; Fri, 14 Jan 2022 11:11:08 +0300 To: pgsql-hackers@lists.postgresql.org From: "Anton A. Melnikov" Subject: Possible fails in pg_stat_statements test Message-ID: <1ccd00d9-1723-6b68-ae56-655aab00d406@inbox.ru> Date: Fri, 14 Jan 2022 11:11:07 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1F02B441EA0D860881972099" Content-Language: en-US Authentication-Results: smtp58.i.mail.ru; auth=pass smtp.auth=aamelnikov@inbox.ru smtp.mailfrom=aamelnikov@inbox.ru X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9CD668969C51240A45842FFE3EF17D9AEE991350EB245CB6F182A05F538085040DA15E1F3EBA938076799F917AF24455FCC6EAC6F075BA649BD59E7149549D9ED X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7F9D3BE5B596754B8C2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6778DA827A17800CE7D114FA852BF02E08EA1F7E6F0F101C6723150C8DA25C47586E58E00D9D99D84E1BDDB23E98D2D38BEBC5CAB6D411FFA6279447490A1BCBD32F76C2CD03BB527F20879F7C8C5043D14489FFFB0AA5F4BF176DF2183F8FC7C02CC0D3CB04F14752D2E47CDBA5A96583C09775C1D3CA48CF17B107DEF921CE79117882F4460429724CE54428C33FAD30A8DF7F3B2552694AC26CFBAC0749D213D2E47CDBA5A9658378DA827A17800CE7328B01A8D746D8839FA2833FD35BB23DF004C90652538430302FCEF25BFAB3454AD6D5ED66289B5278DA827A17800CE7E7BEACFC93DFB5F2D32BA5DBAC0009BE395957E7521B51C20BC6067A898B09E4090A508E0FED6299176DF2183F8FC7C0910E47378E270D9BCD04E86FAF290E2D7E9C4E3C761E06A71DD303D21008E29813377AFFFEAFD269A417C69337E82CC2E827F84554CEF50127C277FBC8AE2E8BA83251EDC214901ED5E8D9A59859A8B6B1CFA6D474D4A6A4089D37D7C0E48F6C5571747095F342E88FB05168BE4CE3AF X-C1DE0DAB: C20DE7B7AB408E4181F030C43753B8183A4AFAF3EA6BDC44C22C572F31DE52E4BF0E6906D4BA60DF35340CF2E0E18B515196E9105F2A4CAA9C2B6934AE262D3EE7EAB7254005DCEDEC3416319FD9A01192E1F3B950BCE216D137639923C070AB9681A556D97FD635BDC6A1CF3F042BAD6DF99611D93F60EFBAA8CD687FCDB2EB699F904B3F4130E343918A1A30D5E7FCCB5012B2E24CD356 X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D342E8FEDBD32DECB6D560D2285F6CE1BBA3623FC9056182D25D5EC1433C9E2E81E8B3C92400485BB041D7E09C32AA3244CCB5850A0451F4A28ABB9365F9DA1D957A90944CA99CF22E33EB3F6AD6EA9203E X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojieoUMt/u5Lh3df0mfbOOXg== X-Mailru-Sender: 583F1D7ACE8F49BDA9D736A28B9E4F823B96EC9B71A5D02DA0CB06A6F9EBE3E7C229C8A6E59C67F74D5D706BA1F24F5F39D6CA1605B49A4EAD5F279D6597390C4F0A872F021F90595006A4317769895AC77752E0C033A69E3453F38A29522196 X-Mras: Ok 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. --------------1F02B441EA0D860881972099 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hello, There are some places in the pg_state_statement's regress test where the bool result of comparison between the number of rows obtained and wal_records generated by query should be displayed. Now counting the number of wal_records for some query in pg_state_statement is done by the global pgWalUsage.wal_records counter difference calculation. During query execution the extra wal_records may appear that are not relate to the query. There are two reasons why this might happen: 1) Owing to the hit into pruning of some page in optional pruning function (heap_page_prune_opt()). 2) When a new page is required for a new xid in clog and WriteZeroPageXlogRec() was called. In both cases an extra wal record with zero xl_xid is generated, so wal_records counter gives an incremented value for this query and pg_stat_statement test will fail. This patch introduces an additional counter of wal records not related to the query being executed. Due to this counter pg_stat_statement finds out the number of wal records that are not relevant to the query and does not include them in the per query statistic. This removes the possibility of the error described above. There is a way to reproduce this error when patch is not applied: 1) start server with "shared_preload_libraries = 'pg_stat_statements'" string in the postgresql.conf; 2) replace makefile in contrib/pg_stat_statements with attached one; 3) replace test file contrib/pg_stat_statements/sql/pg_stat_statements.sql and expected results contrib/pg_stat_statements/expected/pg_stat_statements.out with shorter versions from attached files; 4) copy test.sh to contrib/pg_stat_statements and make sure that PGHOME point to your server; 5) cd to contrib/pg_stat_statements and execute: export ITER=1 && while ./start.sh || break; export ITER=$(($ITER+1)); do :; done Usually 100-200 iterations will be enough. To catch the error more faster one can add wal_records column to SELECT in line 26 of contrib/pg_stat_statements/sql/pg_stat_statements.sql as followes: SELECT query, calls, rows, wal_records, and replace the contrib/pg_stat_statements/expected/pg_stat_statements.out with attached pg_stat_statements-fast.out With best regards, -- Anton A. Melnikov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company --------------1F02B441EA0D860881972099 Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Fix-possible-fails-in-pg_stat_statements-test.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="v1-0001-Fix-possible-fails-in-pg_stat_statements-test.patch" commit 3f4659a8d8a390bb24fbc6f82a6add7949fbebe2 Author: Anton A. Melnikov Date: Fri Jan 14 10:54:35 2022 +0300 Fix possible fails in pg_stat_statements test via taking into account non-query wal records. diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index 082bfa8f77..bd437aefc3 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -1370,7 +1370,7 @@ pgss_store(const char *query, uint64 queryId, e->counters.blk_read_time += INSTR_TIME_GET_MILLISEC(bufusage->blk_read_time); e->counters.blk_write_time += INSTR_TIME_GET_MILLISEC(bufusage->blk_write_time); e->counters.usage += USAGE_EXEC(total_time); - e->counters.wal_records += walusage->wal_records; + e->counters.wal_records += (walusage->wal_records - walusage->non_query_wal_recs); e->counters.wal_fpi += walusage->wal_fpi; e->counters.wal_bytes += walusage->wal_bytes; diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index 3201fcc52b..41f17ab97c 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -20,6 +20,7 @@ #include "access/transam.h" #include "access/xlog.h" #include "catalog/catalog.h" +#include "executor/instrument.h" #include "miscadmin.h" #include "pgstat.h" #include "storage/bufmgr.h" @@ -208,6 +209,11 @@ heap_page_prune_opt(Relation relation, Buffer buffer) ndeleted = heap_page_prune(relation, buffer, vistest, limited_xmin, limited_ts, &nnewlpdead, NULL); + /* Take into account that heap_page_prune() just generated a new + * wal record with zero xl_xid that is not related to current query. + */ + pgWalUsage.non_query_wal_recs++; + /* * Report the number of tuples reclaimed to pgstats. This is * ndeleted minus the number of newly-LP_DEAD-set items. diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index de787c3d37..e944fc3b1a 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -38,6 +38,7 @@ #include "access/xlog.h" #include "access/xloginsert.h" #include "access/xlogutils.h" +#include "executor/instrument.h" #include "miscadmin.h" #include "pg_trace.h" #include "pgstat.h" @@ -955,6 +956,12 @@ WriteZeroPageXlogRec(int pageno) XLogBeginInsert(); XLogRegisterData((char *) (&pageno), sizeof(int)); (void) XLogInsert(RM_CLOG_ID, CLOG_ZEROPAGE); + + /* + * Consider that a new unrelated to current query wal record + * with zero xl_xid has just been created. + */ + pgWalUsage.non_query_wal_recs++; } /* diff --git a/src/backend/executor/instrument.c b/src/backend/executor/instrument.c index c5ff02a842..214fb3cc45 100644 --- a/src/backend/executor/instrument.c +++ b/src/backend/executor/instrument.c @@ -268,6 +268,7 @@ WalUsageAdd(WalUsage *dst, WalUsage *add) dst->wal_bytes += add->wal_bytes; dst->wal_records += add->wal_records; dst->wal_fpi += add->wal_fpi; + dst->non_query_wal_recs += add->non_query_wal_recs; } void @@ -276,4 +277,5 @@ WalUsageAccumDiff(WalUsage *dst, const WalUsage *add, const WalUsage *sub) dst->wal_bytes += add->wal_bytes - sub->wal_bytes; dst->wal_records += add->wal_records - sub->wal_records; dst->wal_fpi += add->wal_fpi - sub->wal_fpi; + dst->non_query_wal_recs += add->non_query_wal_recs - sub->non_query_wal_recs; } diff --git a/src/include/executor/instrument.h b/src/include/executor/instrument.h index 1b7157bdd1..0d83f37a3c 100644 --- a/src/include/executor/instrument.h +++ b/src/include/executor/instrument.h @@ -49,6 +49,11 @@ typedef struct WalUsage int64 wal_records; /* # of WAL records produced */ int64 wal_fpi; /* # of WAL full page images produced */ uint64 wal_bytes; /* size of WAL records produced */ + /* + * Number of WAL records unrelated to current query. In particular due to + * heap_page_prune_opt() or WriteZeroPageXlogRec(). + */ + int64 non_query_wal_recs; } WalUsage; /* Flag bits included in InstrAlloc's instrument_options bitmask */ --------------1F02B441EA0D860881972099 Content-Type: text/plain; charset=UTF-8; name="Makefile" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Makefile" IyBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9NYWtlZmlsZQoKTU9EVUxFX2JpZyA9IHBn X3N0YXRfc3RhdGVtZW50cwpPQkpTID0gXAoJJChXSU4zMlJFUykgXAoJcGdfc3RhdF9zdGF0 ZW1lbnRzLm8KCkVYVEVOU0lPTiA9IHBnX3N0YXRfc3RhdGVtZW50cwpEQVRBID0gcGdfc3Rh dF9zdGF0ZW1lbnRzLS0xLjQuc3FsIHBnX3N0YXRfc3RhdGVtZW50cy0tMS44LS0xLjkuc3Fs IFwKCXBnX3N0YXRfc3RhdGVtZW50cy0tMS43LS0xLjguc3FsIHBnX3N0YXRfc3RhdGVtZW50 cy0tMS42LS0xLjcuc3FsIFwKCXBnX3N0YXRfc3RhdGVtZW50cy0tMS41LS0xLjYuc3FsIHBn X3N0YXRfc3RhdGVtZW50cy0tMS40LS0xLjUuc3FsIFwKCXBnX3N0YXRfc3RhdGVtZW50cy0t MS4zLS0xLjQuc3FsIHBnX3N0YXRfc3RhdGVtZW50cy0tMS4yLS0xLjMuc3FsIFwKCXBnX3N0 YXRfc3RhdGVtZW50cy0tMS4xLS0xLjIuc3FsIHBnX3N0YXRfc3RhdGVtZW50cy0tMS4wLS0x LjEuc3FsClBHRklMRURFU0MgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIC0gZXhlY3V0aW9uIHN0 YXRpc3RpY3Mgb2YgU1FMIHN0YXRlbWVudHMiCgpMREZMQUdTX1NMICs9ICQoZmlsdGVyIC1s bSwgJChMSUJTKSkKClJFR1JFU1NfT1BUUyA9IC0tdGVtcC1jb25maWcgJCh0b3Bfc3JjZGly KS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuY29uZgpS RUdSRVNTID0gcGdfc3RhdF9zdGF0ZW1lbnRzIG9sZGV4dHZlcnNpb25zClJFR1JFU1MgPSAg JChzaGVsbCBwcmludGYgInBnX3N0YXRfc3RhdGVtZW50cyAlLjBzIiBgc2VxIDEgMTAwYCkg b2xkZXh0dmVyc2lvbnMKIyBEaXNhYmxlZCBiZWNhdXNlIHRoZXNlIHRlc3RzIHJlcXVpcmUg InNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcz1wZ19zdGF0X3N0YXRlbWVudHMiLAojIHdoaWNo IHR5cGljYWwgaW5zdGFsbGNoZWNrIHVzZXJzIGRvIG5vdCBoYXZlIChlLmcuIGJ1aWxkZmFy bSBjbGllbnRzKS4KIyBOT19JTlNUQUxMQ0hFQ0sgPSAxCgppZmRlZiBVU0VfUEdYUwpQR19D T05GSUcgPSBwZ19jb25maWcKUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMp CmluY2x1ZGUgJChQR1hTKQplbHNlCnN1YmRpciA9IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzCnRvcF9idWlsZGRpciA9IC4uLy4uCmluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9N YWtlZmlsZS5nbG9iYWwKaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1n bG9iYWwubWsKZW5kaWYK --------------1F02B441EA0D860881972099 Content-Type: application/sql; name="pg_stat_statements.sql" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_stat_statements.sql" Q1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3N0YXRlbWVudHM7CgotLQotLSBzaW1wbGUgYW5k IGNvbXBvdW5kIHN0YXRlbWVudHMKLS0KU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191 dGlsaXR5ID0gRkFMU0U7ClNFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfcGxhbm5pbmcg PSBUUlVFOwpTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCk7CgotLSB1dGlsaXR5 ICJjcmVhdGUgdGFibGUiIHNob3VsZCBub3QgYmUgc2hvd24KQ1JFQVRFIFRBQkxFIHBnc3Nf dGVzdCAoYSBpbnQsIGIgY2hhcigyMCkpOwoKSU5TRVJUIElOVE8gcGdzc190ZXN0IFZBTFVF UyhnZW5lcmF0ZV9zZXJpZXMoMSwgMTApLCAnYWFhJyk7ClVQREFURSBwZ3NzX3Rlc3QgU0VU IGIgPSAnYmJiJyBXSEVSRSBhID4gNzsKREVMRVRFIEZST00gcGdzc190ZXN0IFdIRVJFIGEg PiA5OwotLSBEUk9QIHRlc3QgdGFibGUKU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191 dGlsaXR5ID0gVFJVRTsKLS0gU0VMRUNUIHdhbF9yZWNvcmRzIEZST00gcGdfc3RhdF93YWw7 Ci0tIHNlbGVjdCB0eGlkX2N1cnJlbnQoKTsKRFJPUCBUQUJMRSBwZ3NzX3Rlc3Q7Ci0tIHNl bGVjdCB0eGlkX2N1cnJlbnQoKTsKLS0gU0VMRUNUIHdhbF9yZWNvcmRzIEZST00gcGdfc3Rh dF93YWw7ClNFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFOwoK LS0gQ2hlY2sgV0FMIGlzIGdlbmVyYXRlZCBmb3IgdGhlIGFib3ZlIHN0YXRlbWVudHMKU0VM RUNUIHF1ZXJ5LCBjYWxscywgcm93cywKd2FsX2J5dGVzID4gMCBhcyB3YWxfYnl0ZXNfZ2Vu ZXJhdGVkLAp3YWxfcmVjb3JkcyA+IDAgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkLAp3YWxf cmVjb3JkcyA9IHJvd3MgYXMgd2FsX3JlY29yZHNfYXNfcm93cwpGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKCkRST1AgRVhURU5TSU9OIHBn X3N0YXRfc3RhdGVtZW50czs= --------------1F02B441EA0D860881972099 Content-Type: text/plain; charset=UTF-8; name="pg_stat_statements.out" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_stat_statements.out" Q1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3N0YXRlbWVudHM7Ci0tCi0tIHNpbXBsZSBhbmQg Y29tcG91bmQgc3RhdGVtZW50cwotLQpTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0 aWxpdHkgPSBGQUxTRTsKU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19wbGFubmluZyA9 IFRSVUU7ClNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKIHBnX3N0YXRfc3Rh dGVtZW50c19yZXNldCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAooMSByb3cpCgot LSB1dGlsaXR5ICJjcmVhdGUgdGFibGUiIHNob3VsZCBub3QgYmUgc2hvd24KQ1JFQVRFIFRB QkxFIHBnc3NfdGVzdCAoYSBpbnQsIGIgY2hhcigyMCkpOwpJTlNFUlQgSU5UTyBwZ3NzX3Rl c3QgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxLCAxMCksICdhYWEnKTsKVVBEQVRFIHBnc3Nf dGVzdCBTRVQgYiA9ICdiYmInIFdIRVJFIGEgPiA3OwpERUxFVEUgRlJPTSBwZ3NzX3Rlc3Qg V0hFUkUgYSA+IDk7Ci0tIERST1AgdGVzdCB0YWJsZQpTRVQgcGdfc3RhdF9zdGF0ZW1lbnRz LnRyYWNrX3V0aWxpdHkgPSBUUlVFOwotLSBTRUxFQ1Qgd2FsX3JlY29yZHMgRlJPTSBwZ19z dGF0X3dhbDsKLS0gc2VsZWN0IHR4aWRfY3VycmVudCgpOwpEUk9QIFRBQkxFIHBnc3NfdGVz dDsKLS0gc2VsZWN0IHR4aWRfY3VycmVudCgpOwotLSBTRUxFQ1Qgd2FsX3JlY29yZHMgRlJP TSBwZ19zdGF0X3dhbDsKU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0g RkFMU0U7Ci0tIENoZWNrIFdBTCBpcyBnZW5lcmF0ZWQgZm9yIHRoZSBhYm92ZSBzdGF0ZW1l bnRzClNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MsCndhbF9ieXRlcyA+IDAgYXMgd2FsX2J5 dGVzX2dlbmVyYXRlZCwKd2FsX3JlY29yZHMgPiAwIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRl ZCwKd2FsX3JlY29yZHMgPSByb3dzIGFzIHdhbF9yZWNvcmRzX2FzX3Jvd3MKRlJPTSBwZ19z dGF0X3N0YXRlbWVudHMgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYWxs cyB8IHJvd3MgfCB3YWxfYnl0ZXNfZ2VuZXJhdGVkIHwgd2FsX3JlY29yZHNfZ2VuZXJhdGVk IHwgd2FsX3JlY29yZHNfYXNfcm93cyAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogREVMRVRFIEZST00gcGdzc190ZXN0IFdIRVJFIGEgPiAkMSAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgIDEgfCAgICAxIHwgdCAgICAgICAgICAgICAgICAgICB8IHQgICAg ICAgICAgICAgICAgICAgICB8IHQKIERST1AgVEFCTEUgcGdzc190ZXN0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxIHwgICAgMCB8IHQgICAgICAgICAg ICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICAgfCBmCiBJTlNFUlQgSU5UTyBwZ3Nz X3Rlc3QgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygkMSwgJDIpLCAkMykgfCAgICAgMSB8ICAg MTAgfCB0ICAgICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICAgICAgIHwgdAog U0VMRUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDEgfCAgICAxIHwgZiAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICAgICB8IGYKIFNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICt8ICAgICAwIHwgICAgMCB8IGYgICAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgICAgICAgfCB0CiB3YWxfYnl0ZXMgPiAkMSBhcyB3YWxf Ynl0ZXNfZ2VuZXJhdGVkLCAgICAgICAgICAgICAgICAgICArfCAgICAgICB8ICAgICAgfCAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCiB3YWxfcmVj b3JkcyA+ICQyIGFzIHdhbF9yZWNvcmRzX2dlbmVyYXRlZCwgICAgICAgICAgICAgICArfCAg ICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgCiB3YWxfcmVjb3JkcyA9IHJvd3MgYXMgd2FsX3JlY29yZHNfYXNfcm93cyAgICAg ICAgICAgICAgICArfCAgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgIHwgCiBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBC WSBxdWVyeSBDT0xMQVRFICJDIiAgICAgICAgfCAgICAgICB8ICAgICAgfCAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgCiBTRVQgcGdfc3RhdF9zdGF0 ZW1lbnRzLnRyYWNrX3V0aWxpdHkgPSBGQUxTRSAgICAgICAgICAgICAgfCAgICAgMSB8ICAg IDAgfCBmICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgICAgIHwgdAog VVBEQVRFIHBnc3NfdGVzdCBTRVQgYiA9ICQxIFdIRVJFIGEgPiAkMiAgICAgICAgICAgICAg ICAgIHwgICAgIDEgfCAgICAzIHwgdCAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAg ICAgICAgICAgICB8IHQKKDcgcm93cykKCkRST1AgRVhURU5TSU9OIHBnX3N0YXRfc3RhdGVt ZW50czsK --------------1F02B441EA0D860881972099 Content-Type: application/x-shellscript; name="start.sh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="start.sh" IyEvYmluL2Jhc2gKCnNldCAtZQoKIyBSdW4gdGhpcyBzY3JpcHQgYXM6IGV4cG9ydCBJVEVS PTAgJiYgd2hpbGUgZXhwb3J0IElURVI9JCgoJElURVIrMSkpICYmIC4vdG1lLnNoOyBkbyA6 OyBkb25lCmVjaG8gQEBAQEBAQEBAQEBAQEBAQCBJdGVyYXRpb24gbnVtYmVyOiAkSVRFUiAg QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBACgokUEdIT01FL2Jpbi9wZ19jdGwgLXcgLWwgfi9s b2dmaWxlIC1EICRQR0hPTUUvZGF0YSByZXN0YXJ0Cm1ha2UgaW5zdGFsbGNoZWNrCgoK --------------1F02B441EA0D860881972099 Content-Type: text/plain; charset=UTF-8; name="pg_stat_statements-fast.out" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pg_stat_statements-fast.out" Q1JFQVRFIEVYVEVOU0lPTiBwZ19zdGF0X3N0YXRlbWVudHM7Ci0tCi0tIHNpbXBsZSBhbmQg Y29tcG91bmQgc3RhdGVtZW50cwotLQpTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX3V0 aWxpdHkgPSBGQUxTRTsKU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19wbGFubmluZyA9 IFRSVUU7ClNFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKTsKIHBnX3N0YXRfc3Rh dGVtZW50c19yZXNldCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAooMSByb3cpCgot LSB1dGlsaXR5ICJjcmVhdGUgdGFibGUiIHNob3VsZCBub3QgYmUgc2hvd24KQ1JFQVRFIFRB QkxFIHBnc3NfdGVzdCAoYSBpbnQsIGIgY2hhcigyMCkpOwpJTlNFUlQgSU5UTyBwZ3NzX3Rl c3QgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygxLCAxMCksICdhYWEnKTsKVVBEQVRFIHBnc3Nf dGVzdCBTRVQgYiA9ICdiYmInIFdIRVJFIGEgPiA3OwpERUxFVEUgRlJPTSBwZ3NzX3Rlc3Qg V0hFUkUgYSA+IDk7Ci0tIERST1AgdGVzdCB0YWJsZQpTRVQgcGdfc3RhdF9zdGF0ZW1lbnRz LnRyYWNrX3V0aWxpdHkgPSBUUlVFOwotLSBTRUxFQ1Qgd2FsX3JlY29yZHMgRlJPTSBwZ19z dGF0X3dhbDsKLS0gc2VsZWN0IHR4aWRfY3VycmVudCgpOwpEUk9QIFRBQkxFIHBnc3NfdGVz dDsKLS0gc2VsZWN0IHR4aWRfY3VycmVudCgpOwotLSBTRUxFQ1Qgd2FsX3JlY29yZHMgRlJP TSBwZ19zdGF0X3dhbDsKU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja191dGlsaXR5ID0g RkFMU0U7Ci0tIENoZWNrIFdBTCBpcyBnZW5lcmF0ZWQgZm9yIHRoZSBhYm92ZSBzdGF0ZW1l bnRzClNFTEVDVCBxdWVyeSwgY2FsbHMsIHJvd3MsIHdhbF9yZWNvcmRzLAp3YWxfYnl0ZXMg PiAwIGFzIHdhbF9ieXRlc19nZW5lcmF0ZWQsCndhbF9yZWNvcmRzID4gMCBhcyB3YWxfcmVj b3Jkc19nZW5lcmF0ZWQsCndhbF9yZWNvcmRzID0gcm93cyBhcyB3YWxfcmVjb3Jkc19hc19y b3dzCkZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMi OwogICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FsbHMgfCByb3dzIHwgd2FsX3JlY29yZHMgfCB3YWxfYnl0ZXNfZ2VuZXJh dGVkIHwgd2FsX3JlY29yZHNfZ2VuZXJhdGVkIHwgd2FsX3JlY29yZHNfYXNfcm93cyAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBERUxFVEUg RlJPTSBwZ3NzX3Rlc3QgV0hFUkUgYSA+ICQxICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICAgMSB8ICAgIDEgfCAgICAgICAgICAgMSB8IHQgICAgICAgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgICAgICAgICAgfCB0CiBEUk9QIFRBQkxFIHBnc3NfdGVzdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDAgfCAgICAgICAgICAx NSB8IHQgICAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgICAgICAgfCBmCiBJ TlNFUlQgSU5UTyBwZ3NzX3Rlc3QgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygkMSwgJDIpLCAk MykgfCAgICAgMSB8ICAgMTAgfCAgICAgICAgICAxMCB8IHQgICAgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgICAgICAgfCB0CiBTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRz X3Jlc2V0KCkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMSB8ICAgIDEgfCAgICAg ICAgICAgMCB8IGYgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAg fCBmCiBTRUxFQ1QgcXVlcnksIGNhbGxzLCByb3dzLCB3YWxfcmVjb3JkcywgICAgICAgICAg ICAgICAgICArfCAgICAgMCB8ICAgIDAgfCAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgICAgICAgfCB0CiB3YWxfYnl0ZXMgPiAkMSBhcyB3 YWxfYnl0ZXNfZ2VuZXJhdGVkLCAgICAgICAgICAgICAgICAgICArfCAgICAgICB8ICAgICAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAKIHdhbF9yZWNvcmRzID4gJDIgYXMgd2FsX3JlY29yZHNfZ2VuZXJhdGVkLCAg ICAgICAgICAgICAgICt8ICAgICAgIHwgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8IAogd2FsX3JlY29yZHMgPSBy b3dzIGFzIHdhbF9yZWNvcmRzX2FzX3Jvd3MgICAgICAgICAgICAgICAgK3wgICAgICAgfCAg ICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgIHwgCiBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBD T0xMQVRFICJDIiAgICAgICAgfCAgICAgICB8ICAgICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAKIFNFVCBwZ19zdGF0 X3N0YXRlbWVudHMudHJhY2tfdXRpbGl0eSA9IEZBTFNFICAgICAgICAgICAgICB8ICAgICAx IHwgICAgMCB8ICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICAgICB8IHQKIFVQREFURSBwZ3NzX3Rlc3QgU0VUIGIgPSAkMSBXSEVSRSBh ID4gJDIgICAgICAgICAgICAgICAgICB8ICAgICAxIHwgICAgMyB8ICAgICAgICAgICAzIHwg dCAgICAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgICAgICB8IHQKKDcgcm93 cykKCkRST1AgRVhURU5TSU9OIHBnX3N0YXRfc3RhdGVtZW50czsK --------------1F02B441EA0D860881972099--