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 1uNRz6-002IQD-UY for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jun 2025 07:59:29 +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 1uNRz3-005dcW-UX for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jun 2025 07:59:26 +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 1uNRz3-005dcO-IV for pgsql-hackers@lists.postgresql.org; Fri, 06 Jun 2025 07:59:26 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uNRz2-000Vcz-0a for pgsql-hackers@lists.postgresql.org; Fri, 06 Jun 2025 07:59:25 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-ad88d77314bso360998266b.1 for ; Fri, 06 Jun 2025 00:59:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749196762; x=1749801562; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=oMXzbM4JRHnjtQKd82A+8CUIC/GH/g85kiu5Fsoc+6o=; b=jkturLTCWTgOYLHMgTk/rIVZTcaKnCVMt9HY0tGSAPBlAAS3d6HbaMzDScuNtnieJR kZOyuek70K3k2cDL9Ic3Y+tMykuG7uXkky/S4OKdz0iLXFMlxRTWF8Ccv2G+2BgYKUEL NZ9OH6S7OGrfDyNN+o7+j6uZK6Buu3v++kiJJpZ0SYPTflxfxOyylnk+osu3YctW7vNR bZXguz5OZLbYq0zwa7/xtlz6Ic3EtSaJNa5gozwIXrb72pstPhA4ntuZbLLnast/8gmU p2NiSeLcRuLNxAR+DSTv1MEQmmtZ8PmlKv8NRLYwwiYb3CJxKotYPP09TqAiJ4yv1rLM xZOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749196762; x=1749801562; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=oMXzbM4JRHnjtQKd82A+8CUIC/GH/g85kiu5Fsoc+6o=; b=WjSF2VEN/c1AimYKhS6EdXysJFwQ517DktPEK2OGybIgPif8KtRhxNw3JI0kGryJaA BUQ3Z2vU37bsVwMpJYilkjj4UYpGEUYfoL2X0RC7eFP5WZILT3wiFsdgm2Lrm+0F0b/N 54524vI6PMNQQ5AHwjZTKJnappH2gngIknf43ql/Fsh3yPmKeMN55SHt1t1+3FcxTzm1 i7++mw4YrKf5pHolJPQP+dPpZrF+vdIIuDL/yGWmMA0JwzX0P7AKBLNVNvEJteMxAQ0A wzm7VrwuHbFnYLzl6XqRunktOiiOdv+/Qziz4Dab6RffFskipyPw4KS3F8hMrBBNpTAQ TL9g== X-Gm-Message-State: AOJu0YxSnhDvStQ59XjpqSpqgtOEul+TaVXasyotyEDkTkoulDZcPCqJ fdi6Gx6en1TlL4ROHmycfePLrOZ7Jyy8kZxnvBba9BGNb98Pn3MO30xNzZl8+JrnAWUinPhsO1+ 6+G0sit9L6mF2HAQpzAMoYyNedKgJHHfr5cWh X-Gm-Gg: ASbGnctiHAd0AUdJ3s9mqO/exjTiPQghlo806JrE1hraDpdn3KI+qGkaXUDvDs5rS5Z F3j2rumqIuW/KjDepLhaif65ero/uzpVnN160fQr/BUoRK2zhIxqkFyzTX596m9/iqmO9qmfpQb 8uio+FDSa0Noah467Zxpul6SpAJch21xEHWZvbd6bUd1RQ X-Google-Smtp-Source: AGHT+IGvgX/dH/QkVWMJyqVTtf805d0qmzT3DBBCf/5Igt/kkIvsoPTj+6VIb5jv/OEEa1PmKTdx49fkczHYkTSgnzE= X-Received: by 2002:a17:907:7f14:b0:ad8:a4a8:1034 with SMTP id a640c23a62f3a-ade1a8e9ce8mr193824266b.8.1749196762376; Fri, 06 Jun 2025 00:59:22 -0700 (PDT) MIME-Version: 1.0 From: Tatsuro Yamada Date: Fri, 6 Jun 2025 16:59:09 +0900 X-Gm-Features: AX0GCFsdST1pLWTamQ_vgFVOHOX4ZOsFC7iS4n92rJhi8V14BIILjxQsWGVDf6E Message-ID: Subject: Add enable_groupagg GUC parameter to control GroupAggregate usage To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000aa71970636e29bb7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa71970636e29bb7 Content-Type: multipart/alternative; boundary="000000000000aa71950636e29bb5" --000000000000aa71950636e29bb5 Content-Type: text/plain; charset="UTF-8" Hi hackers, When I measured the execution time of a certain query with parallel query enabled and disabled, I found that the execution time was slower when parallel query was enabled. To improve the performance of the parallel query, I considered adjusting the execution plan and attempted to switch from GroupAggregate to HashAggregate. However, I noticed that there was no GUC parameter to disable GroupAggregate. Therefore, I propose adding a new GUC parameter: enable_groupagg. Below are the results of a performance test where I disabled GroupAggregate using enable_groupagg. In this case, the planner chose HashAggregate instead, which improved performance by about 35 times. # Query Execution Results (Average of 3 measurements) - With parallel query: 39546 seconds - With parallel query and enable_groupagg turned off: 1115 seconds # Query and Data Used (attached to this email) - Query: test_query.sql - Data: create_table.sql # The steps to run the test are as follows. For example, on psql: 1. Create tables: \i create_table.sql 2. Execute a query: \i test_query.sql 3. Execute a query using the new GUC parameter: set enable_groupagg to off; \i test_query.sql As a benefit to users, while there has previously been a GUC parameter to control HashAggregate, there was no corresponding way to control GroupAggregate. This patch addresses that, giving users more flexibility in tuning execution plans. I've attached a WIP patch that adds this GUC parameter. I would appreciate any feedback, especially regarding how many test cases I should create. To create new test cases for enable_groupagg, I looked into existing test cases that use enable_hashagg and found that it is used in many places (62 places). Should I add a test case for enable_groupagg in the same place as enable_hashagg? I think that adding a new feature requires a minimum number of test cases, so I would appreciate your advice. Additionally, based on the execution plan, I suspect the slowdown in the parallel query might be caused by misestimates related to Sort or Gather Merge. While resolving those misestimates would ideally improve the root issue, I'd like to keep the focus of this thread on adding the GUC parameter. Then, I plan to report or address the estimation problem in a separate thread. Thanks, Tatsuro Yamada --000000000000aa71950636e29bb5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

When I measured the exec= ution time of a certain query with parallel query
enabled and disabled, = I found that the execution time was slower when
parallel query was enabl= ed.

To improve the performance of the parallel query, I considered a= djusting
the execution plan and attempted to switch from GroupAggregate = to
HashAggregate. However, I noticed that there was no GUC parameter to<= br>disable GroupAggregate.

Therefore, I propose adding a new GUC par= ameter: enable_groupagg.

Below are the results of a performance test= where I disabled
GroupAggregate using enable_groupagg. In this case, th= e planner chose
HashAggregate instead, which improved performance by abo= ut 35 times.

# Query Execution Results (Average of 3 measurements)- With parallel query: =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 39546 second= s
- With parallel query and enable_groupagg turned off: =C2=A0 1115 seco= nds

# Query and Data Used (attached to this email)
- Query: test_= query.sql
- Data: =C2=A0create_table.sql

# The steps to run the t= est are as follows.
For example, on psql:

1. Create tables:
= =C2=A0 =C2=A0 \i create_table.sql

2. Execute a query:
=C2=A0 =C2= =A0 \i test_query.sql

3. Execute a query using the new GUC parameter= :
=C2=A0 =C2=A0 set enable_groupagg to off;
=C2=A0 =C2=A0 \i test_que= ry.sql

As a benefit to users, while there has previously been a GUC = parameter
to control HashAggregate, there was no corresponding way to co= ntrol
GroupAggregate. This patch addresses that, giving users more flexi= bility
in tuning execution plans.

I've attached a WIP patch t= hat adds this GUC parameter. I would
appreciate any feedback, especially= regarding how many test cases I
should create.

To create new te= st cases for enable_groupagg, I looked into existing
test cases that us= e enable_hashagg and found that it is used in many
places (62 places). = Should I add a test case for enable_groupagg in
the same place as enabl= e_hashagg? I think that adding a new feature
requires a minimum number = of test cases, so I would appreciate your
advice.


Additional= ly, based on the execution plan, I suspect the slowdown in the
parallel = query might be caused by misestimates related to Sort or
Gather Merge.While resolving those misestimates would ideally improve the root issue,<= br>I'd like to keep the focus of this thread on adding the GUC paramete= r.
Then, I plan to report or address the estimation problem in a separat= e
thread.

Thanks,
Tatsuro Ya= mada

--000000000000aa71950636e29bb5-- --000000000000aa71970636e29bb7 Content-Type: application/octet-stream; name="test_query.sql" Content-Disposition: attachment; filename="test_query.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbkihtpe1 RVhQTEFJTiAoYW5hbHl6ZSwgc2V0dGluZ3MpClNFTEVDVCAKICAgIGNkX2dlbmRlciwKICAgIGNk X21hcml0YWxfc3RhdHVzLAogICAgY2RfZWR1Y2F0aW9uX3N0YXR1cywKICAgIENPVU5UKCopIEFT IGNudDEsCiAgICBjZF9pbmNvbWVfYmFuZCwKICAgIENPVU5UKCopIEFTIGNudDIsCiAgICBjZF9j cmVkaXRfcmF0aW5nLAogICAgQ09VTlQoKikgQVMgY250MywKICAgIGNkX2RlcF9jb3VudCwKICAg IENPVU5UKCopIEFTIGNudDQKRlJPTSBjdXN0b21lciBjCkpPSU4gY3VzdG9tZXJfYWRkcmVzcyBj YSBPTiBjLmNfY3VycmVudF9hZGRyX3NrID0gY2EuY2FfYWRkcmVzc19zawpKT0lOIGN1c3RvbWVy X2RlbW9ncmFwaGljcyBjZCBPTiBjZC5jZF9kZW1vX3NrID0gYy5jX2N1cnJlbnRfY2RlbW9fc2sK V0hFUkUgY2FfY291bnR5IElOICgnUnVzaCBDb3VudHknLCAnVG9vbGUgQ291bnR5JywgJ0plZmZl cnNvbiBDb3VudHknLCAnRG9uYSBBbmEgQ291bnR5JywgJ0xhIFBvcnRlIENvdW50eScpCkFORCBF WElTVFMgKAogICAgU0VMRUNUIDEgCiAgICBGUk9NIHN0b3JlX3NhbGVzIHNzCiAgICBKT0lOIGRh dGVfZGltIGQgT04gc3Muc3Nfc29sZF9kYXRlX3NrID0gZC5kX2RhdGVfc2sKICAgIFdIRVJFIGMu Y19jdXN0b21lcl9zayA9IHNzLnNzX2N1c3RvbWVyX3NrIAogICAgQU5EIGQuZF95ZWFyID0gMjAw MiAKICAgIEFORCBkLmRfbW95IEJFVFdFRU4gMSBBTkQgNAopCkFORCAoCiAgICBFWElTVFMgKAog ICAgICAgIFNFTEVDVCAxIAogICAgICAgIEZST00gd2ViX3NhbGVzIHdzCiAgICAgICAgSk9JTiBk YXRlX2RpbSBkIE9OIHdzLndzX3NvbGRfZGF0ZV9zayA9IGQuZF9kYXRlX3NrCiAgICAgICAgV0hF UkUgYy5jX2N1c3RvbWVyX3NrID0gd3Mud3NfYmlsbF9jdXN0b21lcl9zayAKICAgICAgICBBTkQg ZC5kX3llYXIgPSAyMDAyIAogICAgICAgIEFORCBkLmRfbW95IEJFVFdFRU4gMSBBTkQgNAogICAg KSAKICAgIE9SIEVYSVNUUyAoCiAgICAgICAgU0VMRUNUIDEgCiAgICAgICAgRlJPTSBjYXRhbG9n X3NhbGVzIGNzCiAgICAgICAgSk9JTiBkYXRlX2RpbSBkIE9OIGNzLmNzX3NvbGRfZGF0ZV9zayA9 IGQuZF9kYXRlX3NrCiAgICAgICAgV0hFUkUgYy5jX2N1c3RvbWVyX3NrID0gY3MuY3Nfc2hpcF9j dXN0b21lcl9zayAKICAgICAgICBBTkQgZC5kX3llYXIgPSAyMDAyIAogICAgICAgIEFORCBkLmRf bW95IEJFVFdFRU4gMSBBTkQgNAogICAgKQopCkdST1VQIEJZIGNkX2dlbmRlciwgY2RfbWFyaXRh bF9zdGF0dXMsIGNkX2VkdWNhdGlvbl9zdGF0dXMsIGNkX2luY29tZV9iYW5kLCBjZF9jcmVkaXRf cmF0aW5nLCBjZF9kZXBfY291bnQKT1JERVIgQlkgY2RfZ2VuZGVyLCBjZF9tYXJpdGFsX3N0YXR1 cywgY2RfZWR1Y2F0aW9uX3N0YXR1cywgY2RfaW5jb21lX2JhbmQsIGNkX2NyZWRpdF9yYXRpbmcs IGNkX2RlcF9jb3VudApMSU1JVCAxMDA7Cg== --000000000000aa71970636e29bb7 Content-Type: application/octet-stream; name="0001-Add-new-GUC-parameter-enable_groupagg-WIP-r1.patch" Content-Disposition: attachment; filename="0001-Add-new-GUC-parameter-enable_groupagg-WIP-r1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbkihtpm2 RnJvbSA0NjFjNjQ3NzBlNjEyNjYxZDk3NGFjYzBmZDM5ODE1MTA4NzgxNTgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdXJvIFlhbWFkYSA8eWFtYXRhdHRzdUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgNSBKdW4gMjAyNSAxODo1MDozNCArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBuZXcgR1VDIHBhcmFtZXRlcjogZW5hYmxlX2dyb3VwYWdnCgpQcmV2aW91c2x5LCB0aGVyZSB3 YXMgbm8gR1VDIHBhcmFtZXRlciB0byBjb250cm9sIHRoZSB1c2Ugb2YKR3JvdXBBZ2dyZWdhdGUs IHNvIHdlIGNvdWxkbid0IGluZmx1ZW5jZSB0aGUgcGxhbm5lcidzIGNob2ljZQogaW4gY2VydGFp biBxdWVyaWVzLgpUaGlzIHBhdGNoIGFkZHMgYSBuZXcgcGFyYW1ldGVyLCAiZW5hYmxlX2dyb3Vw YWdnIiwgd2hpY2gKYWxsb3dzIHVzZXJzIHRvIGVuYWJsZSBvciBkaXNhYmxlIEdyb3VwQWdncmVn YXRlIGV4cGxpY2l0bHkuCgpCeSBkaXNhYmxpbmcgR3JvdXBBZ2dyZWdhdGUsIHRoZSBwbGFubmVy IG1heSBjaG9vc2UKSGFzaEFnZ3JlZ2F0ZSBpbnN0ZWFkLCBwb3RlbnRpYWxseSByZXN1bHRpbmcg aW4gYSBtb3JlCmVmZmljaWVudCBleGVjdXRpb24gcGxhbiBmb3Igc29tZSBxdWVyaWVzLgotLS0K IGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jICAgICAgICAg fCAgMyArKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8 IDEwICsrKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSB8ICAxICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9jb3N0LmggICAgICAgICAgICAgICAg ICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8 ICAzICsrLQogNiBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sCmluZGV4IDAyMTE1M2IyYTVmLi5lZGQwZjNhMTNiOCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAt NTUxNSw2ICs1NTE1LDIwIEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt X3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMt ZW5hYmxlLWdyb3VwYWdnIiB4cmVmbGFiZWw9ImVuYWJsZV9ncm91cGFnZyI+CisgICAgICA8dGVy bT48dmFybmFtZT5lbmFibGVfZ3JvdXBhZ2c8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+ZW5hYmxlX2dy b3VwYWdnPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxw YXJhPgorICAgICAgICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBxdWVyeSBwbGFubmVyJ3MgdXNl IG9mIGdyb3VwZWQKKyAgICAgICAgYWdncmVnYXRpb24gcGxhbiB0eXBlcy4gVGhlIGRlZmF1bHQg aXMgPGxpdGVyYWw+b248L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1l bmFibGUtaGFzaGpvaW4iIHhyZWZsYWJlbD0iZW5hYmxlX2hhc2hqb2luIj4KICAgICAgIDx0ZXJt Pjx2YXJuYW1lPmVuYWJsZV9oYXNoam9pbjwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+ KQogICAgICAgPGluZGV4dGVybT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w YXRoL2Nvc3RzaXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmlu ZGV4IDNkNDQ4MTVlZDVhLi44MGM2ODAwOGQ4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvY29zdHNpemUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9j b3N0c2l6ZS5jCkBAIC0xNTAsNiArMTUwLDcgQEAgYm9vbAkJZW5hYmxlX3RpZHNjYW4gPSB0cnVl OwogYm9vbAkJZW5hYmxlX3NvcnQgPSB0cnVlOwogYm9vbAkJZW5hYmxlX2luY3JlbWVudGFsX3Nv cnQgPSB0cnVlOwogYm9vbAkJZW5hYmxlX2hhc2hhZ2cgPSB0cnVlOworYm9vbAkJZW5hYmxlX2dy b3VwYWdnID0gdHJ1ZTsKIGJvb2wJCWVuYWJsZV9uZXN0bG9vcCA9IHRydWU7CiBib29sCQllbmFi bGVfbWF0ZXJpYWwgPSB0cnVlOwogYm9vbAkJZW5hYmxlX21lbW9pemUgPSB0cnVlOwpAQCAtMjcz Nyw2ICsyNzM4LDggQEAgY29zdF9hZ2coUGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsCiAJ CS8qIEhlcmUgd2UgYXJlIGFibGUgdG8gZGVsaXZlciBvdXRwdXQgb24tdGhlLWZseSAqLwogCQlz dGFydHVwX2Nvc3QgPSBpbnB1dF9zdGFydHVwX2Nvc3Q7CiAJCXRvdGFsX2Nvc3QgPSBpbnB1dF90 b3RhbF9jb3N0OworCQlpZiAoYWdnc3RyYXRlZ3kgPT0gQUdHX1NPUlRFRCAmJiAhZW5hYmxlX2dy b3VwYWdnICYmIGVuYWJsZV9oYXNoYWdnKQorCQkJKytkaXNhYmxlZF9ub2RlczsKIAkJaWYgKGFn Z3N0cmF0ZWd5ID09IEFHR19NSVhFRCAmJiAhZW5hYmxlX2hhc2hhZ2cpCiAJCQkrK2Rpc2FibGVk X25vZGVzOwogCQkvKiBjYWxjcyBwaHJhc2VkIHRoaXMgd2F5IHRvIG1hdGNoIEhBU0hFRCBjYXNl LCBzZWUgbm90ZSBhYm92ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBm MDRiZmVkYjJmZC4uYTE3YjdmYjFiYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CkBAIC04NjksNiArODY5LDE2IEBAIHN0cnVjdCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jv b2xbXSA9CiAJCXRydWUsCiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAorCXsKKwkJeyJlbmFibGVf Z3JvdXBhZ2ciLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKKwkJCWdldHRleHRf bm9vcCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBncm91cGVkIGFnZ3JlZ2F0aW9uIHBs YW5zLiIpLAorCQkJTlVMTCwKKwkJCUdVQ19FWFBMQUlOCisJCX0sCisJCSZlbmFibGVfZ3JvdXBh Z2csCisJCXRydWUsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCXsKIAkJeyJlbmFibGVfbWF0 ZXJpYWwiLCBQR0NfVVNFUlNFVCwgUVVFUllfVFVOSU5HX01FVEhPRCwKIAkJCWdldHRleHRfbm9v cCgiRW5hYmxlcyB0aGUgcGxhbm5lcidzIHVzZSBvZiBtYXRlcmlhbGl6YXRpb24uIiksCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggMzQxZjg4 YWRjODcuLjA1MTRjMzI3NzY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC00MDgsNiArNDA4LDcgQEAKICNlbmFibGVfYml0bWFwc2NhbiA9 IG9uCiAjZW5hYmxlX2dhdGhlcm1lcmdlID0gb24KICNlbmFibGVfaGFzaGFnZyA9IG9uCisjZW5h YmxlX2dyb3VwYWdnID0gb24KICNlbmFibGVfaGFzaGpvaW4gPSBvbgogI2VuYWJsZV9pbmNyZW1l bnRhbF9zb3J0ID0gb24KICNlbmFibGVfaW5kZXhzY2FuID0gb24KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL29wdGltaXplci9jb3N0LmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oCmlu ZGV4IGQzOTdmZTI3ZGMxLi4wOTlkNDFmZDdiZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL2Nvc3QuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oCkBAIC01Nyw2 ICs1Nyw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV90aWRzY2FuOwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX3NvcnQ7CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBl bmFibGVfaW5jcmVtZW50YWxfc29ydDsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9o YXNoYWdnOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2dyb3VwYWdnOwogZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX25lc3Rsb29wOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJv b2wgZW5hYmxlX21hdGVyaWFsOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX21lbW9p emU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CmluZGV4IDgzMjI4Y2ZjYTI5 Li5mMTAzNzFkNmUyNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2 aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zeXN2aWV3cy5vdXQKQEAg LTE1Myw2ICsxNTMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3NldHRpbmdzIHdo ZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX2Rpc3RpbmN0X3Jlb3JkZXJpbmcgICAg IHwgb24KICBlbmFibGVfZ2F0aGVybWVyZ2UgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9ncm91 cF9ieV9yZW9yZGVyaW5nICAgICB8IG9uCisgZW5hYmxlX2dyb3VwYWdnICAgICAgICAgICAgICAg IHwgb24KICBlbmFibGVfaGFzaGFnZyAgICAgICAgICAgICAgICAgfCBvbgogIGVuYWJsZV9oYXNo am9pbiAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2luY3JlbWVudGFsX3NvcnQgICAgICAg IHwgb24KQEAgLTE3Miw3ICsxNzMsNyBAQCBzZWxlY3QgbmFtZSwgc2V0dGluZyBmcm9tIHBnX3Nl dHRpbmdzIHdoZXJlIG5hbWUgbGlrZSAnZW5hYmxlJSc7CiAgZW5hYmxlX3NlcXNjYW4gICAgICAg ICAgICAgICAgIHwgb24KICBlbmFibGVfc29ydCAgICAgICAgICAgICAgICAgICAgfCBvbgogIGVu YWJsZV90aWRzY2FuICAgICAgICAgICAgICAgICB8IG9uCi0oMjQgcm93cykKKygyNSByb3dzKQog CiAtLSBUaGVyZSBhcmUgYWx3YXlzIHdhaXQgZXZlbnQgZGVzY3JpcHRpb25zIGZvciB2YXJpb3Vz IHR5cGVzLiAgSW5qZWN0aW9uUG9pbnQKIC0tIG1heSBiZSBwcmVzZW50IG9yIGFic2VudCwgZGVw ZW5kaW5nIG9uIGhpc3Rvcnkgc2luY2UgbGFzdCBwb3N0bWFzdGVyIHN0YXJ0LgotLSAKMi40My41 Cgo= --000000000000aa71970636e29bb7 Content-Type: application/octet-stream; name="create_table.sql" Content-Disposition: attachment; filename="create_table.sql" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mbkihtp10 Q1JFQVRFIFRBQkxFIGN1c3RvbWVyICgKICAgIGNfY3VzdG9tZXJfc2sgSU5UIFBSSU1BUlkgS0VZ LAogICAgY19jdXJyZW50X2FkZHJfc2sgSU5ULAogICAgY19jdXJyZW50X2NkZW1vX3NrIElOVAop OwpJTlNFUlQgSU5UTyBjdXN0b21lciAKU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwMDAp LCAKICAgICAgIChyYW5kb20oKSAqIDUwMDAwKTo6SU5UICsgMSwgCiAgICAgICAocmFuZG9tKCkg KiAxOTIwODAwKTo6SU5UICsgMTsKCkNSRUFURSBUQUJMRSBjdXN0b21lcl9hZGRyZXNzICgKICAg IGNhX2FkZHJlc3Nfc2sgSU5UIFBSSU1BUlkgS0VZLAogICAgY2FfY291bnR5IFZBUkNIQVIoNTAp Cik7CklOU0VSVCBJTlRPIGN1c3RvbWVyX2FkZHJlc3MgClNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgNTAwMDApLCAKICAgICAgIENBU0UgKHJhbmRvbSgpICogNSk6OklOVCArIDEgCiAgICAgICAg ICAgV0hFTiAxIFRIRU4gJ1J1c2ggQ291bnR5JwogICAgICAgICAgIFdIRU4gMiBUSEVOICdUb29s ZSBDb3VudHknCiAgICAgICAgICAgV0hFTiAzIFRIRU4gJ0plZmZlcnNvbiBDb3VudHknCiAgICAg ICAgICAgV0hFTiA0IFRIRU4gJ0RvbmEgQW5hIENvdW50eScKICAgICAgICAgICBXSEVOIDUgVEhF TiAnTGEgUG9ydGUgQ291bnR5JwogICAgICAgRU5EOwoKQ1JFQVRFIFRBQkxFIGN1c3RvbWVyX2Rl bW9ncmFwaGljcyAoCiAgICBjZF9kZW1vX3NrIElOVCBQUklNQVJZIEtFWSwKICAgIGNkX2dlbmRl ciBWQVJDSEFSKDEwKSwKICAgIGNkX21hcml0YWxfc3RhdHVzIFZBUkNIQVIoMTUpLAogICAgY2Rf ZWR1Y2F0aW9uX3N0YXR1cyBWQVJDSEFSKDIwKSwKICAgIGNkX2luY29tZV9iYW5kIElOVCwKICAg IGNkX2NyZWRpdF9yYXRpbmcgVkFSQ0hBUigxMCksCiAgICBjZF9kZXBfY291bnQgSU5UCik7CklO U0VSVCBJTlRPIGN1c3RvbWVyX2RlbW9ncmFwaGljcyAKU0VMRUNUIGdlbmVyYXRlX3Nlcmllcygx LCAxOTIwODAwKSwgCiAgICAgICBDQVNFIChyYW5kb20oKSAqIDIpOjpJTlQgKyAxIAogICAgICAg ICAgIFdIRU4gMSBUSEVOICdNYWxlJwogICAgICAgICAgIFdIRU4gMiBUSEVOICdGZW1hbGUnCiAg ICAgICBFTkQsCiAgICAgICBDQVNFIChyYW5kb20oKSAqIDMpOjpJTlQgKyAxIAogICAgICAgICAg IFdIRU4gMSBUSEVOICdTaW5nbGUnCiAgICAgICAgICAgV0hFTiAyIFRIRU4gJ01hcnJpZWQnCiAg ICAgICAgICAgV0hFTiAzIFRIRU4gJ0Rpdm9yY2VkJwogICAgICAgRU5ELAogICAgICAgQ0FTRSAo cmFuZG9tKCkgKiAzKTo6SU5UICsgMSAKICAgICAgICAgICBXSEVOIDEgVEhFTiAnQmFjaGVsb3In CiAgICAgICAgICAgV0hFTiAyIFRIRU4gJ01hc3RlcicKICAgICAgICAgICBXSEVOIDMgVEhFTiAn UGhEJwogICAgICAgRU5ELAogICAgICAgKHJhbmRvbSgpICogMTAwMDAwKTo6SU5UICsgMSwKICAg ICAgIENBU0UgKHJhbmRvbSgpICogMyk6OklOVCArIDEgCiAgICAgICAgICAgV0hFTiAxIFRIRU4g J0dvb2QnCiAgICAgICAgICAgV0hFTiAyIFRIRU4gJ0F2ZXJhZ2UnCiAgICAgICAgICAgV0hFTiAz IFRIRU4gJ1Bvb3InCiAgICAgICBFTkQsCiAgICAgICAocmFuZG9tKCkgKiA1KTo6SU5UICsgMTsK CkNSRUFURSBUQUJMRSBzdG9yZV9zYWxlcyAoCiAgICBzc19jdXN0b21lcl9zayBJTlQsCiAgICBz c19zb2xkX2RhdGVfc2sgSU5UCik7CklOU0VSVCBJTlRPIHN0b3JlX3NhbGVzIApTRUxFQ1QgKHJh bmRvbSgpICogMTAwMDAwKTo6SU5UICsgMSwgCiAgICAgICAocmFuZG9tKCkgKiA3MzA0OSk6OklO VCArIDEKRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjg4MDQwNCk7CgpDUkVBVEUgVEFCTEUgd2Vi X3NhbGVzICgKICAgIHdzX2JpbGxfY3VzdG9tZXJfc2sgSU5ULAogICAgd3Nfc29sZF9kYXRlX3Nr IElOVAopOwpJTlNFUlQgSU5UTyB3ZWJfc2FsZXMgClNFTEVDVCAocmFuZG9tKCkgKiAxMDAwMDAp OjpJTlQgKyAxLCAKICAgICAgIChyYW5kb20oKSAqIDczMDQ5KTo6SU5UICsgMQpGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA3MTkzODQpOwoKQ1JFQVRFIFRBQkxFIGNhdGFsb2dfc2FsZXMgKAogICAg Y3Nfc2hpcF9jdXN0b21lcl9zayBJTlQsCiAgICBjc19zb2xkX2RhdGVfc2sgSU5UCik7CklOU0VS VCBJTlRPIGNhdGFsb2dfc2FsZXMgClNFTEVDVCAocmFuZG9tKCkgKiAxMDAwMDApOjpJTlQgKyAx LCAKICAgICAgIChyYW5kb20oKSAqIDczMDQ5KTo6SU5UICsgMQpGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxNDQxNTQ4KTsKCkNSRUFURSBUQUJMRSBkYXRlX2RpbSAoCiAgICBkX2RhdGVfc2sgSU5U IFBSSU1BUlkgS0VZLAogICAgZF95ZWFyIElOVCwKICAgIGRfbW95IElOVAopOwpJTlNFUlQgSU5U TyBkYXRlX2RpbSAKU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA3MzA0OSksIAogICAgICAgMjAw MCArIChyYW5kb20oKSAqIDI1KTo6SU5ULCAKICAgICAgIChyYW5kb20oKSAqIDEyKTo6SU5UICsg MTsKQU5BTFlaRTsKCgo= --000000000000aa71970636e29bb7--