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 1tThzY-008hV6-1w for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jan 2025 13:45:32 +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 1tThzW-001pGj-N8 for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Jan 2025 13:45:30 +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 1tThzW-001pGb-9Q for pgsql-hackers@lists.postgresql.org; Fri, 03 Jan 2025 13:45:30 +0000 Received: from forward500a.mail.yandex.net ([178.154.239.80]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tThzU-0002Hq-0L for pgsql-hackers@postgresql.org; Fri, 03 Jan 2025 13:45:29 +0000 Received: from mail-nwsmtp-smtp-production-main-37.myt.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-37.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:297:0:640:929a:0]) by forward500a.mail.yandex.net (Yandex) with ESMTPS id 3046160EBE for ; Fri, 3 Jan 2025 16:45:24 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-37.myt.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id MjhDGqqOma60-6wlxUURV; Fri, 03 Jan 2025 16:45:23 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1735911923; bh=kLetoEcN+1cDbEubzt8VnIbDUIyLlNFU8+5JVlRpaeQ=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=AoiKY+D48HXleL47FgfmJJ80ScdRXCF7gPNp527beag+U3NtWj22EWsVsiKkQ5KO4 pVC4hbAuzzou3g6/RPbn8tTHu/bpnoGUJF9fYKmul+fzof97ZwZI9Q2WoDg8EFUlDp 2xzPeJQxz2Y0webc+8QFXQjEZj/XvPiVAPAG0svY= Authentication-Results: mail-nwsmtp-smtp-production-main-37.myt.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------N5JJ7mXqIOKsnUBJ2OG4RyPv" Message-ID: <24ed07ad-e857-47a8-9477-49fc19fb89c9@tantorlabs.com> Date: Fri, 3 Jan 2025 16:45:21 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Define STATS_MIN_ROWS for minimum rows of stats in ANALYZE From: Ilia Evdokimov To: pgsql-hackers References: <04cfac17-d7af-4efb-9fad-673c1d2db49d@tantorlabs.com> <93af9682-d7aa-49a9-842e-7599e8d36028@tantorlabs.com> Content-Language: en-US In-Reply-To: <93af9682-d7aa-49a9-842e-7599e8d36028@tantorlabs.com> 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. --------------N5JJ7mXqIOKsnUBJ2OG4RyPv Content-Type: multipart/alternative; boundary="------------jf3p2B05IxKb3Tyoe8szdKGj" --------------jf3p2B05IxKb3Tyoe8szdKGj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 10.12.2024 16:32, Ilia Evdokimov wrote: > > On 09.12.2024 16:10, Ilia Evdokimov wrote: >> Hi hackers, >> >> The repeated use of the number 300 in the ANALYZE-related code >> creates redundancy and relies on scattered, sometimes unclear, >> comments to explain its purpose. This can make the code harder to >> understand, especially for new contributors who might not immediately >> understand its significance. To address this, I propose introducing a >> macro STATS_MIN_ROWS to represent this value and consolidating its >> explanation in a single place, making the code more consistent and >> readable. >> >> -- >> Best regards, >> Ilia Evdokimov, >> Tantor Labs LLC. > > > Hi everyone, > > Currently, the value 300 is used as the basis for determining the > number of rows sampled during ANALYZE, both for single-column and > extended statistics. While this value has a well-established rationale > for single-column statistics, its suitability for extended statistics > remains uncertain, as no specific research has confirmed that this is > an optimal choice for them. To better reflect this distinction, I > propose introducing two macros: STATS_MIN_ROWS for single-column > statistics and EXT_STATS_MIN_ROWS for extended statistics. > > This change separates the concerns of single-column and extended > statistics sampling, making the code more explicit and easier to adapt > if future research suggests a different approach for extended > statistics. The values remain the same for now, but the introduction > of distinct macros improves clarity and prepares the codebase for > potential refinements. > > Does this seem like a reasonable approach to handling these differences? > > -- > Best regards, > Ilia Evdokimov, > Tantor Labs LLC. Hi everyone, In my opinion, it is more appropriate to define||EXT_STATS_MIN_ROWS as STATS_MIN_ROWS. I also reverted some of the code comments and rewrote others. I attached patch. Any thoughts? -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------jf3p2B05IxKb3Tyoe8szdKGj Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 10.12.2024 16:32, Ilia Evdokimov wrote:

On 09.12.2024 16:10, Ilia Evdokimov wrote:
Hi hackers,

The repeated use of the number 300 in the ANALYZE-related code creates redundancy and relies on scattered, sometimes unclear, comments to explain its purpose. This can make the code harder to understand, especially for new contributors who might not immediately understand its significance. To address this, I propose introducing a macro STATS_MIN_ROWS to represent this value and consolidating its explanation in a single place, making the code more consistent and readable.

-- 
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.


Hi everyone,

Currently, the value 300 is used as the basis for determining the number of rows sampled during ANALYZE, both for single-column and extended statistics. While this value has a well-established rationale for single-column statistics, its suitability for extended statistics remains uncertain, as no specific research has confirmed that this is an optimal choice for them. To better reflect this distinction, I propose introducing two macros: STATS_MIN_ROWS for single-column statistics and EXT_STATS_MIN_ROWS for extended statistics.

This change separates the concerns of single-column and extended statistics sampling, making the code more explicit and easier to adapt if future research suggests a different approach for extended statistics. The values remain the same for now, but the introduction of distinct macros improves clarity and prepares the codebase for potential refinements.

Does this seem like a reasonable approach to handling these differences?

--
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.


Hi everyone,

In my opinion, it is more appropriate to define EXT_STATS_MIN_ROWS as STATS_MIN_ROWS. I also reverted some of the code comments and rewrote others. I attached patch.

Any thoughts?

--
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.

--------------jf3p2B05IxKb3Tyoe8szdKGj-- --------------N5JJ7mXqIOKsnUBJ2OG4RyPv Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Define-macros-for-minimum-rows-of-stats.patch" Content-Disposition: attachment; filename="v3-0001-Define-macros-for-minimum-rows-of-stats.patch" Content-Transfer-Encoding: base64 RnJvbSBkOGUzOGE3ODg1NzAwNjE4OWExNDlhY2M1YjM2ZGYzZDc3ZmUxZTQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5jb20+CkRhdGU6IEZyaSwgMyBKYW4gMjAyNSAxNjozMjo0MyArMDMwMApT dWJqZWN0OiBbUEFUQ0hdIERlZmluZSBtYWNyb3MgZm9yIG1pbmltdW0gcm93cyBvZiBzdGF0 cyBpbiBBTkFMWVpFCgpUaGlzIGludHJvZHVjZXMgdHdvIG1hY3JvcywgU1RBVFNfTUlOX1JP V1MgYW5kIEVYVF9TVEFUU19NSU5fUk9XUywKdG8gcmVwcmVzZW50IHRoZSBkZWZhdWx0IG1p bmltdW0gbnVtYmVyIG9mIHJvd3Mgc2FtcGxlZCBpbiBBTkFMWVpFLgpTVEFUU19NSU5fUk9X UyBpcyB1c2VkIGZvciBzaW5nbGUtY29sdW1uIHN0YXRpc3RpY3MsCndoaWxlIEVYVF9TVEFU U19NSU5fUk9XUyBpcyBpbnRlbmRlZCBmb3IgZXh0ZW5kZWQgc3RhdGlzdGljcy4KQm90aCBt YWNyb3MgcmVwbGFjZSB0aGUgaGFyZGNvZGVkIHZhbHVlIG9mIDMwMCwgaW1wcm92aW5nIGNs YXJpdHkuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jICAgICAgICAgICAg ICAgIHwgMjYgKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9l eHRlbmRlZF9zdGF0cy5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3RzZWFyY2gvdHNf dHlwYW5hbHl6ZS5jICAgICAgICAgICB8ICA1ICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yYW5nZXR5cGVzX3R5cGFuYWx5emUuYyB8ICA1ICsrLS0KIC4uLi9zdGF0aXN0aWNzL2V4 dGVuZGVkX3N0YXRzX2ludGVybmFsLmggICAgICB8IDExICsrKysrKysrCiBzcmMvaW5jbHVk ZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCAgICAgICAgICAgfCAyMyArKysrKysrKysrKysr KysrCiA2IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2FuYWx5emUuYwppbmRleCAyYTc3NjliMWZkLi40YzAyZTRmMThh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0xODk3LDQwICsxODk3LDIyIEBAIHN0 ZF90eXBhbmFseXplKFZhY0F0dHJTdGF0cyAqc3RhdHMpCiAJewogCQkvKiBTZWVtcyB0byBi ZSBhIHNjYWxhciBkYXRhdHlwZSAqLwogCQlzdGF0cy0+Y29tcHV0ZV9zdGF0cyA9IGNvbXB1 dGVfc2NhbGFyX3N0YXRzOwotCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tCi0JCSAqIFRoZSBm b2xsb3dpbmcgY2hvaWNlIG9mIG1pbnJvd3MgaXMgYmFzZWQgb24gdGhlIHBhcGVyCi0JCSAq ICJSYW5kb20gc2FtcGxpbmcgZm9yIGhpc3RvZ3JhbSBjb25zdHJ1Y3Rpb246IGhvdyBtdWNo IGlzIGVub3VnaD8iCi0JCSAqIGJ5IFN1cmFqaXQgQ2hhdWRodXJpLCBSYWplZXYgTW90d2Fu aSBhbmQgVml2ZWsgTmFyYXNheXlhLCBpbgotCQkgKiBQcm9jZWVkaW5ncyBvZiBBQ00gU0lH TU9EIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBNYW5hZ2VtZW50Ci0JCSAqIG9mIERh dGEsIDE5OTgsIFBhZ2VzIDQzNi00NDcuICBUaGVpciBDb3JvbGxhcnkgMSB0byBUaGVvcmVt IDUKLQkJICogc2F5cyB0aGF0IGZvciB0YWJsZSBzaXplIG4sIGhpc3RvZ3JhbSBzaXplIGss IG1heGltdW0gcmVsYXRpdmUKLQkJICogZXJyb3IgaW4gYmluIHNpemUgZiwgYW5kIGVycm9y IHByb2JhYmlsaXR5IGdhbW1hLCB0aGUgbWluaW11bQotCQkgKiByYW5kb20gc2FtcGxlIHNp emUgaXMKLQkJICoJCXIgPSA0ICogayAqIGxuKDIqbi9nYW1tYSkgLyBmXjIKLQkJICogVGFr aW5nIGYgPSAwLjUsIGdhbW1hID0gMC4wMSwgbiA9IDEwXjYgcm93cywgd2Ugb2J0YWluCi0J CSAqCQlyID0gMzA1LjgyICogawotCQkgKiBOb3RlIHRoYXQgYmVjYXVzZSBvZiB0aGUgbG9n IGZ1bmN0aW9uLCB0aGUgZGVwZW5kZW5jZSBvbiBuIGlzCi0JCSAqIHF1aXRlIHdlYWs7IGV2 ZW4gYXQgbiA9IDEwXjEyLCBhIDMwMCprIHNhbXBsZSBnaXZlcyA8PSAwLjY2Ci0JCSAqIGJp biBzaXplIGVycm9yIHdpdGggcHJvYmFiaWxpdHkgMC45OS4gIFNvIHRoZXJlJ3Mgbm8gcmVh bCBuZWVkIHRvCi0JCSAqIHNjYWxlIGZvciBuLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcgYmVj YXVzZSB3ZSBkb24ndCBuZWNlc3NhcmlseQotCQkgKiBrbm93IGl0IGF0IHRoaXMgcG9pbnQu Ci0JCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkJICovCi0JCXN0YXRzLT5taW5yb3dzID0g MzAwICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CisJCS8qIHNlZSBjb21tZW50IGFib3V0IHRo ZSBjaG9pY2Ugb2YgbWlucm93cyBpbiBzdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCAqLworCQlz dGF0cy0+bWlucm93cyA9IChTVEFUU19NSU5fUk9XUyAqIHN0YXRzLT5hdHRzdGF0dGFyZ2V0 KTsKIAl9CiAJZWxzZSBpZiAoT2lkSXNWYWxpZChlcW9wcikpCiAJewogCQkvKiBXZSBjYW4g c3RpbGwgcmVjb2duaXplIGRpc3RpbmN0IHZhbHVlcyAqLwogCQlzdGF0cy0+Y29tcHV0ZV9z dGF0cyA9IGNvbXB1dGVfZGlzdGluY3Rfc3RhdHM7CiAJCS8qIE1pZ2h0IGFzIHdlbGwgdXNl IHRoZSBzYW1lIG1pbnJvd3MgYXMgYWJvdmUgKi8KLQkJc3RhdHMtPm1pbnJvd3MgPSAzMDAg KiBzdGF0cy0+YXR0c3RhdHRhcmdldDsKKwkJc3RhdHMtPm1pbnJvd3MgPSAoU1RBVFNfTUlO X1JPV1MgKiBzdGF0cy0+YXR0c3RhdHRhcmdldCk7CiAJfQogCWVsc2UKIAl7CiAJCS8qIENh bid0IGRvIG11Y2ggYnV0IHRoZSB0cml2aWFsIHN0dWZmICovCiAJCXN0YXRzLT5jb21wdXRl X3N0YXRzID0gY29tcHV0ZV90cml2aWFsX3N0YXRzOwogCQkvKiBNaWdodCBhcyB3ZWxsIHVz ZSB0aGUgc2FtZSBtaW5yb3dzIGFzIGFib3ZlICovCi0JCXN0YXRzLT5taW5yb3dzID0gMzAw ICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CisJCXN0YXRzLT5taW5yb3dzID0gKFNUQVRTX01J Tl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJnZXQpOwogCX0KIAogCXJldHVybiB0cnVlOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jIGIv c3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCmluZGV4IGFlZWMzZWNl NDEuLjA1ZjNkZDdmYmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0 ZW5kZWRfc3RhdHMuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0 YXRzLmMKQEAgLTMxNyw3ICszMTcsNyBAQCBDb21wdXRlRXh0U3RhdGlzdGljc1Jvd3MoUmVs YXRpb24gb25lcmVsLAogCU1lbW9yeUNvbnRleHREZWxldGUoY3h0KTsKIAogCS8qIGNvbXB1 dGUgc2FtcGxlIHNpemUgYmFzZWQgb24gdGhlIHN0YXRpc3RpY3MgdGFyZ2V0ICovCi0JcmV0 dXJuICgzMDAgKiByZXN1bHQpOworCXJldHVybiAoRVhUX1NUQVRTX01JTl9ST1dTICogcmVz dWx0KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3RzZWFyY2gvdHNfdHlw YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFseXplLmMKaW5kZXgg MTQ5NGRhMWM5ZC4uZTIwZTExNDMzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdHNlYXJj aC90c190eXBhbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvdHNlYXJjaC90c190eXBhbmFs eXplLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hh c2hmbi5oIgorI2luY2x1ZGUgInN0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUg InRzZWFyY2gvdHNfdHlwZS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidmFyYXR0LmgiCkBAIC02NCw4ICs2NSw4IEBAIHRzX3R5cGFuYWx5emUoUEdfRlVO Q1RJT05fQVJHUykKIAkJc3RhdHMtPmF0dHN0YXR0YXJnZXQgPSBkZWZhdWx0X3N0YXRpc3Rp Y3NfdGFyZ2V0OwogCiAJc3RhdHMtPmNvbXB1dGVfc3RhdHMgPSBjb21wdXRlX3RzdmVjdG9y X3N0YXRzOwotCS8qIHNlZSBjb21tZW50IGFib3V0IHRoZSBjaG9pY2Ugb2YgbWlucm93cyBp biBjb21tYW5kcy9hbmFseXplLmMgKi8KLQlzdGF0cy0+bWlucm93cyA9IDMwMCAqIHN0YXRz LT5hdHRzdGF0dGFyZ2V0OworCS8qIHNlZSBjb21tZW50IGFib3V0IHRoZSBjaG9pY2Ugb2Yg bWlucm93cyBpbiBzdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCAqLworCXN0YXRzLT5taW5yb3dz ID0gKFNUQVRTX01JTl9ST1dTICogc3RhdHMtPmF0dHN0YXR0YXJnZXQpOwogCiAJUEdfUkVU VVJOX0JPT0wodHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cmFuZ2V0eXBlc190eXBhbmFseXplLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0 eXBlc190eXBhbmFseXplLmMKaW5kZXggOWRjNzNhZjE5OS4uYTc4MDEyZWQ4OSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXNfdHlwYW5hbHl6ZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVzX3R5cGFuYWx5emUuYwpAQCAt MjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0YXRpc3RpY3Mvc3RhdGlz dGljcy5oIgogI2luY2x1ZGUgInV0aWxzL2Zsb2F0LmgiCiAjaW5jbHVkZSAidXRpbHMvZm1n cnByb3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpAQCAtNTcsNyArNTgs NyBAQCByYW5nZV90eXBhbmFseXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAJc3RhdHMtPmNvbXB1 dGVfc3RhdHMgPSBjb21wdXRlX3JhbmdlX3N0YXRzOwogCXN0YXRzLT5leHRyYV9kYXRhID0g dHlwY2FjaGU7CiAJLyogc2FtZSBhcyBpbiBzdGRfdHlwYW5hbHl6ZSAqLwotCXN0YXRzLT5t aW5yb3dzID0gMzAwICogc3RhdHMtPmF0dHN0YXR0YXJnZXQ7CisJc3RhdHMtPm1pbnJvd3Mg PSAoU1RBVFNfTUlOX1JPV1MgKiBzdGF0cy0+YXR0c3RhdHRhcmdldCk7CiAKIAlQR19SRVRV Uk5fQk9PTCh0cnVlKTsKIH0KQEAgLTgzLDcgKzg0LDcgQEAgbXVsdGlyYW5nZV90eXBhbmFs eXplKFBHX0ZVTkNUSU9OX0FSR1MpCiAJc3RhdHMtPmNvbXB1dGVfc3RhdHMgPSBjb21wdXRl X3JhbmdlX3N0YXRzOwogCXN0YXRzLT5leHRyYV9kYXRhID0gdHlwY2FjaGU7CiAJLyogc2Ft ZSBhcyBpbiBzdGRfdHlwYW5hbHl6ZSAqLwotCXN0YXRzLT5taW5yb3dzID0gMzAwICogc3Rh dHMtPmF0dHN0YXR0YXJnZXQ7CisJc3RhdHMtPm1pbnJvd3MgPSAoU1RBVFNfTUlOX1JPV1Mg KiBzdGF0cy0+YXR0c3RhdHRhcmdldCk7CiAKIAlQR19SRVRVUk5fQk9PTCh0cnVlKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50 ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfaW50ZXJu YWwuaAppbmRleCBlZmNiN2RjMzU0Li45ODEyMTExODZhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzX2ludGVybmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0c19pbnRlcm5hbC5oCkBAIC0xNyw2ICsx NywxNyBAQAogI2luY2x1ZGUgInN0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIgogI2luY2x1ZGUg InV0aWxzL3NvcnRzdXBwb3J0LmgiCiAKKy8qIE1pbmltdW0gb2Ygcm93cyB3YW50ZWQgZm9y IGV4dGVuZGVkIHN0YXRzCisgKgorICogQmFzZWQgb24gcmVzZWFyY2gsIGEgZml4ZWQgc2l6 ZSBwcm9wb3J0aW9uYWwgdG8gc3RhdGlzdGljc190YXJnZXQKKyAqICgzMDAgKiBzdGF0aXN0 aWNzX3RhcmdldCkgaXMgZ2VuZXJhbGx5IHN1ZmZpY2llbnQgZm9yIGFjY3VyYXRlIHNpbmds ZS1jb2x1bW4KKyAqIGhpc3RvZ3JhbXMgYW5kIE1DViBsaXN0cy4gSXRzIHN1aXRhYmlsaXR5 IGZvciBleHRlbmRlZCBzdGF0aXN0aWNzLgorICoKKyAqIFhYWCBXaGlsZSB0aGlzIHZhbHVl IHdvcmtzIHJlYXNvbmFibHkgd2VsbCBmb3IgaW5kaXZpZHVhbCBjb2x1bW5zLCBpdHMKKyAq IHN1aXRhYmlsaXR5IGZvciBleHRlbmRlZCBzdGF0aXN0aWNzIGlzIHN0aWxsIGFuIG9wZW4g cXVlc3Rpb24uCisgKi8KKyNkZWZpbmUgRVhUX1NUQVRTX01JTl9ST1dTCVNUQVRTX01JTl9S T1dTCisKIHR5cGVkZWYgc3RydWN0CiB7CiAJT2lkCQkJZXFvcHI7CQkJLyogJz0nIG9wZXJh dG9yIGZvciBkYXRhdHlwZSwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dGF0aXN0aWNzL3N0YXRpc3RpY3MuaCBiL3NyYy9pbmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlz dGljcy5oCmluZGV4IDdkZDBmOTc1NTQuLjA4NjNlMDI5YjEgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0YXRp c3RpY3Mvc3RhdGlzdGljcy5oCkBAIC0yMiw2ICsyMiwyOSBAQAogI2RlZmluZSBTVEFUU19O RElTVElOQ1RfTUFHSUMJCTB4QTM1MkJGQTQJLyogc3RydWN0IGlkZW50aWZpZXIgKi8KICNk ZWZpbmUgU1RBVFNfTkRJU1RJTkNUX1RZUEVfQkFTSUMJMQkvKiBzdHJ1Y3QgdmVyc2lvbiAq LwogCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBNaW5pbXVtIG9mIHJvd3Mgd2FudGVk IGZvciBzdGF0cworICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hvaWNlIG9mIG1pbnJvd3MgaXMg YmFzZWQgb24gdGhlIHBhcGVyCisgKiAiUmFuZG9tIHNhbXBsaW5nIGZvciBoaXN0b2dyYW0g Y29uc3RydWN0aW9uOiBob3cgbXVjaCBpcyBlbm91Z2g/IgorICogYnkgU3VyYWppdCBDaGF1 ZGh1cmksIFJhamVldiBNb3R3YW5pIGFuZCBWaXZlayBOYXJhc2F5eWEsIGluCisgKiBQcm9j ZWVkaW5ncyBvZiBBQ00gU0lHTU9EIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBvbiBNYW5h Z2VtZW50CisgKiBvZiBEYXRhLCAxOTk4LCBQYWdlcyA0MzYtNDQ3LiAgVGhlaXIgQ29yb2xs YXJ5IDEgdG8gVGhlb3JlbSA1CisgKiBzYXlzIHRoYXQgZm9yIHRhYmxlIHNpemUgbiwgaGlz dG9ncmFtIHNpemUgaywgbWF4aW11bSByZWxhdGl2ZQorICogZXJyb3IgaW4gYmluIHNpemUg ZiwgYW5kIGVycm9yIHByb2JhYmlsaXR5IGdhbW1hLCB0aGUgbWluaW11bQorICogcmFuZG9t IHNhbXBsZSBzaXplIGlzCisgKgkJciA9IDQgKiBrICogbG4oMipuL2dhbW1hKSAvIGZeMgor ICogVGFraW5nIGYgPSAwLjUsIGdhbW1hID0gMC4wMSwgbiA9IDEwXjYgcm93cywgd2Ugb2J0 YWluCisgKgkJciA9IDMwNS44MiAqIGsKKyAqIE5vdGUgdGhhdCBiZWNhdXNlIG9mIHRoZSBs b2cgZnVuY3Rpb24sIHRoZSBkZXBlbmRlbmNlIG9uIG4gaXMKKyAqIHF1aXRlIHdlYWs7IGV2 ZW4gYXQgbiA9IDEwXjEyLCBhIDMwMCprIHNhbXBsZSBnaXZlcyA8PSAwLjY2CisgKiBiaW4g c2l6ZSBlcnJvciB3aXRoIHByb2JhYmlsaXR5IDAuOTkuICBTbyB0aGVyZSdzIG5vIHJlYWwg bmVlZCB0bworICogc2NhbGUgZm9yIG4sIHdoaWNoIGlzIGEgZ29vZCB0aGluZyBiZWNhdXNl IHdlIGRvbid0IG5lY2Vzc2FyaWx5CisgKiBrbm93IGl0IGF0IHRoaXMgcG9pbnQuCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNkZWZpbmUgU1RBVFNfTUlOX1JPV1MgCTMwMAor CiAvKiBNVk5EaXN0aW5jdEl0ZW0gcmVwcmVzZW50cyBhIHNpbmdsZSBjb21iaW5hdGlvbiBv ZiBjb2x1bW5zICovCiB0eXBlZGVmIHN0cnVjdCBNVk5EaXN0aW5jdEl0ZW0KIHsKLS0gCjIu MzQuMQoK --------------N5JJ7mXqIOKsnUBJ2OG4RyPv--