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 1pDX5e-0007zI-6n for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 20:43:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pDX5b-0008Vn-QQ for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 20:43:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDX5a-0008Vd-Up for pgsql-hackers@lists.postgresql.org; Thu, 05 Jan 2023 20:43:51 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pDX5W-0003n3-G6 for pgsql-hackers@lists.postgresql.org; Thu, 05 Jan 2023 20:43:50 +0000 Received: by mail-ed1-x531.google.com with SMTP id r26so49227265edc.5 for ; Thu, 05 Jan 2023 12:43:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=+L+g26MWE17S0g7wi8AqQzHx/7eKmB8TYC0iQlm4y2s=; b=g5aYqyy+ys1igI9OgiwJZCTeJNUsdZMrHtyj13PIiOzD32Yp86nJAmn3dgIeU97O6E L5RKXsV2wg0EXcLGbbK4IBTduHhN4Il7wnwDmFQSpQMq4QQoMQtP9+vZZ/4cBMCQAUUp JfsFMxaDFAxpPeja/uiRU3fd76Jdn3BCbe0j88GosO0T4if7Snaq/+LP4f5pRViINE4L E+THVPRTVTeJFTkXx+cuSC0c3S6xac6YkCmZZzZJP2i/kW0NQvkTOesNkcvgvibVK4Mr ApQb4p/gP/nfveMGmgu8nGsCXHuuqDto9zE2kaJ0VAsfIfeoRsRxNKzRJgiJpPSQ3dWc 363g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+L+g26MWE17S0g7wi8AqQzHx/7eKmB8TYC0iQlm4y2s=; b=SufxlbfDZ4durzqQcLzWIySmQJI5Ssp2r7gGzIZIGLO5rKdDBcNoRu8w1zL2K3Qde8 15L1ZS7Z9WyOuMFhf+B5pyn+daTOqonJWukUSHNoiyMhjhO95nmkCVgv8JeVzD1v0A3L xbu2l6sH/AAhxvYRrDyqDp3D9+Djc8zjUODFVLswRrNU/50dk4QNA9R6X34lTuhw1kXk QuPJljlXwT+o7wHDFESR/DeqlALsR+yuQtFJHKuW75jaWhxOew1SxDNz6cPOn9fAzKMc P0PVqyLyhV9KG9YYxK3Jk2cOV633hVrsOtf/17tZ4khAeujcQrj0Yyu/lCLD1ThOQSZC hrLg== X-Gm-Message-State: AFqh2kpU+u3v3QWJApVTxp6WcFNWrosAapNdWPfV7rb7VwI7yXD5Bd2b 6kuj86iczF7d/zH7uLl5XKTp1nJ6zxnkRWYCpGinJjQhtoUFw0mtGXEYvoeLrSns13QwZgMsTMy rLJd3Ax2Y7aKLzfJiLtA+JXb+wnzjX9LDQ1270xKvPL3AzhdGaz3qLjEIBikiVIhuymOPjIOZkR hVExkgyTAm0yCoMnZcEL+3QH/ci8Ex6p2ov7oEwTfFDGTC8c1jGrv0JIuRukjSTUl30fOgMNUlk kGjBFhMMhkXqrHlckr3WuZkcFiCGBacmLudfylqA8aarfZu/n8B3tymPdfH X-Google-Smtp-Source: AMrXdXvUKEALwPwzUXVBaG56CpcnAwUYKaQ0S0+E0GcBZ+Lepfinw0Gn3zBehYULr3bR5OPLrtLKdQ== X-Received: by 2002:a05:6402:1caa:b0:475:9918:37c7 with SMTP id cz10-20020a0564021caa00b00475991837c7mr42099221edb.32.1672951424844; Thu, 05 Jan 2023 12:43:44 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-225-238.bb.vodafone.cz. [86.49.225.238]) by smtp.gmail.com with ESMTPSA id c4-20020aa7c984000000b004873927780bsm11115886edt.20.2023.01.05.12.43.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 05 Jan 2023 12:43:44 -0800 (PST) Content-Type: multipart/mixed; boundary="------------cD9778ugGAcE000ITP093Fb7" Message-ID: <3d719e62-64d2-5184-eebf-6128bcb398e2@enterprisedb.com> Date: Thu, 5 Jan 2023 21:43:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: postgres_fdw: using TABLESAMPLE to collect remote sample From: Tomas Vondra To: Tom Lane Cc: James Finnerty , pgsql-hackers@lists.postgresql.org References: <151e835f-55d6-ddbc-b5b4-07ee606aba44@enterprisedb.com> <03182011-10a4-97b4-7c70-d99aa1c11eed@enterprisedb.com> <167112207543.1120.12195641719862911275.pgcf@coridan.postgresql.org> <3377008.1671122816@sss.pgh.pa.us> <6da357b0-fdd3-095d-a06c-87666f4a5a8c@enterprisedb.com> <951485.1672461744@sss.pgh.pa.us> <233ee0b3-4da0-3370-cd0b-1b8528851ddd@enterprisedb.com> <1040922.1672507431@sss.pgh.pa.us> Content-Language: en-US In-Reply-To: X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------cD9778ugGAcE000ITP093Fb7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, here's two minor postgres_fdw patches, addressing the two issues discussed last week. 1) 0001-Fix-stale-comment-in-postgres_fdw.patch The first one cleans up the comment referencing the sample rate adjustment. While doing that, I realized without the adjustment we should never get sample_rate outside the valid range because we do: if ((reltuples <= 0) || (targrows >= reltuples)) method = ANALYZE_SAMPLE_OFF; So I removed the clamping, or rather replaced it with an assert. 2) 0002-WIP-check-relkind-in-FDW-analyze.patch The second patch adds the relkind check, so that we only issue TABLESAMPLE on valid relation types (tables, matviews). But I'm not sure we actually need it - the example presented earlier was foreign table pointing to a sequence. But that actually works fine even without this patch, because fore sequences we have reltuples=1, which disables sampling due to the check mentioned above (because targrows >= 1). The other issue with this patch is that it seems wrong to check the relkind value locally - instead we should check this on the remote server, because that's where we'll run TABLESAMPLE. Currently there are no differences between versions, but what if we implement TABLESAMPLE for another relkind in the future? Then we'll either fail to use sampling or (worse) we'll try using TABLESAMPLE for unsupported relkind, depending on which of the servers has newer version. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------cD9778ugGAcE000ITP093Fb7 Content-Type: text/x-patch; charset=UTF-8; name="0002-WIP-check-relkind-in-FDW-analyze.patch" Content-Disposition: attachment; filename="0002-WIP-check-relkind-in-FDW-analyze.patch" Content-Transfer-Encoding: base64 RnJvbSA2ODFiMzU2OTI3OGJjNTViNGUyYmJmY2YxMjkyNDU3MDI2MTZlY2Q5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCA1IEphbiAyMDIzIDIxOjEzOjIwICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAyLzJdIFdJUDogY2hlY2sgcmVsa2luZCBpbiBGRFcgYW5hbHl6ZQoKLS0t CiBjb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMgICAgICB8ICAyICstCiBjb250cmli L3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyB8IDE5ICsrKysrKysrKysrKysrKy0tLS0K IDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9kZXBhcnNlLmMKaW5kZXggNDQ2MWZiMDZmMDIuLjlmMzlkNzkyMjgwIDEw MDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKKysrIGIvY29udHJp Yi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jCkBAIC0yMzgzLDcgKzIzODMsNyBAQCBkZXBhcnNl QW5hbHl6ZVR1cGxlc1NxbChTdHJpbmdJbmZvIGJ1ZiwgUmVsYXRpb24gcmVsKQogCWluaXRT dHJpbmdJbmZvKCZyZWxuYW1lKTsKIAlkZXBhcnNlUmVsYXRpb24oJnJlbG5hbWUsIHJlbCk7 CiAKLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlNFTEVDVCByZWx0dXBsZXMgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIFdIRVJFIG9pZCA9ICIpOworCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoYnVmLCAiU0VMRUNUIHJlbHR1cGxlcywgcmVsa2luZCBGUk9NIHBnX2NhdGFs b2cucGdfY2xhc3MgV0hFUkUgb2lkID0gIik7CiAJZGVwYXJzZVN0cmluZ0xpdGVyYWwoYnVm LCByZWxuYW1lLmRhdGEpOwogCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiOjpwZ19j YXRhbG9nLnJlZ2NsYXNzIik7CiB9CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5j CmluZGV4IDY1ODIyYjhhOWFhLi41MGIwMzA2NzE1MiAxMDA2NDQKLS0tIGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv cG9zdGdyZXNfZmR3LmMKQEAgLTQ5NzgsNyArNDk3OCw3IEBAIHBvc3RncmVzQW5hbHl6ZUZv cmVpZ25UYWJsZShSZWxhdGlvbiByZWxhdGlvbiwKICAqCQlDb3VudCB0dXBsZXMgaW4gZm9y ZWlnbiB0YWJsZSAoanVzdCBnZXQgcGdfY2xhc3MucmVsdHVwbGVzKS4KICAqLwogc3RhdGlj IGRvdWJsZQotcG9zdGdyZXNDb3VudFR1cGxlc0ZvckZvcmVpZ25UYWJsZShSZWxhdGlvbiBy ZWxhdGlvbikKK3Bvc3RncmVzQ291bnRUdXBsZXNGb3JGb3JlaWduVGFibGUoUmVsYXRpb24g cmVsYXRpb24sIGJvb2wgKmNhbl9zYW1wbGUpCiB7CiAJRm9yZWlnblRhYmxlICp0YWJsZTsK IAlVc2VyTWFwcGluZyAqdXNlcjsKQEAgLTQ5ODYsNiArNDk4NiwxMCBAQCBwb3N0Z3Jlc0Nv dW50VHVwbGVzRm9yRm9yZWlnblRhYmxlKFJlbGF0aW9uIHJlbGF0aW9uKQogCVN0cmluZ0lu Zm9EYXRhIHNxbDsKIAlQR3Jlc3VsdCAgICp2b2xhdGlsZSByZXMgPSBOVUxMOwogCXZvbGF0 aWxlIGRvdWJsZSByZWx0dXBsZXMgPSAtMTsKKwl2b2xhdGlsZSBjaGFyIHJlbGtpbmQgPSAw OworCisJLyogYXNzdW1lIHRoZSByZWxraW5kIGNhbid0IGJlIHNhbXBsZWQgKi8KKwkqY2Fu X3NhbXBsZSA9IGZhbHNlOwogCiAJLyoKIAkgKiBHZXQgdGhlIGNvbm5lY3Rpb24gdG8gdXNl LiAgV2UgZG8gdGhlIHJlbW90ZSBhY2Nlc3MgYXMgdGhlIHRhYmxlJ3MKQEAgLTUwMDgsOSAr NTAxMiwxMCBAQCBwb3N0Z3Jlc0NvdW50VHVwbGVzRm9yRm9yZWlnblRhYmxlKFJlbGF0aW9u IHJlbGF0aW9uKQogCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNf T0spCiAJCQlwZ2Zkd19yZXBvcnRfZXJyb3IoRVJST1IsIHJlcywgY29ubiwgZmFsc2UsIHNx bC5kYXRhKTsKIAotCQlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVz KSAhPSAxKQorCQlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSAh PSAyKQogCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcmVzdWx0IGZyb20gZGVwYXJzZUFu YWx5emVUdXBsZXNTcWwgcXVlcnkiKTsKIAkJcmVsdHVwbGVzID0gc3RydG9kKFBRZ2V0dmFs dWUocmVzLCAwLCAwKSwgTlVMTCk7CisJCXJlbGtpbmQgPSAqKFBRZ2V0dmFsdWUocmVzLCAw LCAxKSk7CiAJfQogCVBHX0ZJTkFMTFkoKTsKIAl7CkBAIC01MDIxLDYgKzUwMjYsMTAgQEAg cG9zdGdyZXNDb3VudFR1cGxlc0ZvckZvcmVpZ25UYWJsZShSZWxhdGlvbiByZWxhdGlvbikK IAogCVJlbGVhc2VDb25uZWN0aW9uKGNvbm4pOwogCisJKmNhbl9zYW1wbGUgPSAocmVsa2lu ZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CisJCQkJICAgcmVsa2luZCA9PSBSRUxLSU5EX01B VFZJRVcgfHwKKwkJCQkgICByZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp OworCiAJcmV0dXJuIHJlbHR1cGxlczsKIH0KIApAQCAtNTE2NywxMyArNTE3NiwxNSBAQCBw b3N0Z3Jlc0FjcXVpcmVTYW1wbGVSb3dzRnVuYyhSZWxhdGlvbiByZWxhdGlvbiwgaW50IGVs ZXZlbCwKIAkgKi8KIAlpZiAobWV0aG9kICE9IEFOQUxZWkVfU0FNUExFX09GRikKIAl7Ci0J CXJlbHR1cGxlcyA9IHBvc3RncmVzQ291bnRUdXBsZXNGb3JGb3JlaWduVGFibGUocmVsYXRp b24pOworCQlib29sCWNhbl9zYW1wbGU7CisKKwkJcmVsdHVwbGVzID0gcG9zdGdyZXNDb3Vu dFR1cGxlc0ZvckZvcmVpZ25UYWJsZShyZWxhdGlvbiwgJmNhbl9zYW1wbGUpOwogCiAJCS8q CiAJCSAqIFJlbW90ZSdzIHJlbHR1cGxlcyBjb3VsZCBiZSAwIG9yIC0xIGlmIHRoZSB0YWJs ZSBoYXMgbmV2ZXIgYmVlbgogCQkgKiB2YWN1dW1lZC9hbmFseXplZC4gIEluIHRoYXQgY2Fz ZSwgZGlzYWJsZSBzYW1wbGluZyBhZnRlciBhbGwuCiAJCSAqLwotCQlpZiAoKHJlbHR1cGxl cyA8PSAwKSB8fCAodGFyZ3Jvd3MgPj0gcmVsdHVwbGVzKSkKKwkJaWYgKCghY2FuX3NhbXBs ZSkgfHwgKHJlbHR1cGxlcyA8PSAwKSB8fCAodGFyZ3Jvd3MgPj0gcmVsdHVwbGVzKSkKIAkJ CW1ldGhvZCA9IEFOQUxZWkVfU0FNUExFX09GRjsKIAkJZWxzZQogCQl7Ci0tIAoyLjM5LjAK Cg== --------------cD9778ugGAcE000ITP093Fb7 Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-stale-comment-in-postgres_fdw.patch" Content-Disposition: attachment; filename="0001-Fix-stale-comment-in-postgres_fdw.patch" Content-Transfer-Encoding: base64 RnJvbSAwMjBiYTZhZmI4NzI4N2Q3ODI0NzcwNTQ5NDlkNzc5NTQzNzdkMzQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCA1IEphbiAyMDIzIDIwOjExOjQ5ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxLzJdIEZpeCBzdGFsZSBjb21tZW50IGluIHBvc3RncmVzX2ZkdwoKQSBj b21tZW50IHdhcyBsZWZ0IGJlaGluZCByZWZlcmVuY2luZyBhIGJpdCAoc2FtcGxlIHJhdGUg YWRqdXN0bWVudCkKcmVtb3ZlZCBmcm9tIDhhZDUxYjVmNDQuIFNvIGNsZWFuIHRoYXQgdXAs IGFuZCB3aGlsZSBhdCBpdCBhbHNvIHJlbW92ZQpjbGFtcGluZyBvZiB0aGUgc2FtcGxlIHJh dGUgd2hpY2ggc2hvdWxkIG5vdCBiZSBuZWNlc3Nhcnkgd2l0aG91dCB0aGUKY2xhbXBpbmcs IGFuZCBqdXN0IGNoZWNrIHRoYXQgd2l0aCBhbiBhc3NlcnQuCi0tLQogY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgfCA3ICsrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA0 IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuYwppbmRleCAzMzJiNGE1Y2RlYi4uNjU4MjJiOGE5YWEgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC01MjA0LDEwICs1MjA0LDExIEBAIHBvc3Rn cmVzQWNxdWlyZVNhbXBsZVJvd3NGdW5jKFJlbGF0aW9uIHJlbGF0aW9uLCBpbnQgZWxldmVs LAogCQkJc2FtcGxlX2ZyYWMgPSB0YXJncm93cyAvIHJlbHR1cGxlczsKIAogCQkJLyoKLQkJ CSAqIEVuc3VyZSB0aGUgc2FtcGxpbmcgcmF0ZSBpcyBiZXR3ZWVuIDAuMCBhbmQgMS4wLCBl dmVuIGFmdGVyIHRoZQotCQkJICogMTAlIGFkanVzdG1lbnQgYWJvdmUuICAoQ2xhbXBpbmcg dG8gMC4wIGlzIGp1c3QgcGFyYW5vaWEuKQorCQkJICogV2Ugc2hvdWxkIG5ldmVyIGdldCBz YW1wbGluZyByYXRlIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlCisJCQkgKiAoYmV0d2VlbiAw LjAgYW5kIDEuMCksIGJlY2F1c2UgdGhvc2UgY2FzZXMgc2hvdWxkIGJlIGNvdmVyZWQKKwkJ CSAqIGJ5IHRoZSBwcmV2aW91cyBicmFuY2ggdGhhdCBzZXRzIEFOQUxZWkVfU0FNUExFX09G Ri4KIAkJCSAqLwotCQkJc2FtcGxlX2ZyYWMgPSBNaW4oMS4wLCBNYXgoMC4wLCBzYW1wbGVf ZnJhYykpOworCQkJQXNzZXJ0KHNhbXBsZV9mcmFjID09IE1pbigxLjAsIE1heCgwLjAsIHNh bXBsZV9mcmFjKSkpOwogCQl9CiAJfQogCi0tIAoyLjM5LjAKCg== --------------cD9778ugGAcE000ITP093Fb7--