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 1soUSU-00BdNK-G8 for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Sep 2024 21:01: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 1soUST-007zb5-0a for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Sep 2024 21:01:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1soUSS-007zax-Io for pgsql-hackers@lists.postgresql.org; Wed, 11 Sep 2024 21:01:00 +0000 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1soUSP-000h3W-D2 for pgsql-hackers@lists.postgresql.org; Wed, 11 Sep 2024 21:00:59 +0000 Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-5365928acd0so285690e87.2 for ; Wed, 11 Sep 2024 14:00:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726088455; x=1726693255; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=//du7592sRFkXv34oJKjZTAF7I5eWQeOH4EsqgRmYXg=; b=GBYmZqroTkWsEfWEArtdIM7SeJEQ8L85typwJPD9sONm8h+tQA9mJS4xrjp2ZXnSeu G88bbdNqaaOdHU4rUwgjb4qksMHszxfbCotNVnCe87r46SR2M/RvJFHEMFM+LacTdeiC MGesqDq7SYxXAYicPCHcpcB5iK6CA5z91KdWi/HavK3EMQfjnRBZnqFLpCpJMFKMXczB bYnN5njby6H/UeXgJw8F9eYP2JBAb1N+NZ0CFvXZCKgUacXQ1soGEeNL/U+EI9mJtzu0 s1HJiKlwC41tZZA/KGvKSMFobZ8yWVtMLPBKMdrdYwtzKyhu+KuKbGaHssoDS8EPZ4p1 wONQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726088455; x=1726693255; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=//du7592sRFkXv34oJKjZTAF7I5eWQeOH4EsqgRmYXg=; b=hXRX904KloSBnOlhQclAvigpPOONHn4BoTqijkrtjY/MvNcWwaGbqSHQnWHzr0ln9z zIs6dSE7ppvhD9qfWkHbNAMFPikRzAVdcpi/03e8lN7/E+aIGLmHsOrxlbNMoTDP8JL7 FHgM4sR/7BIRSHqq0Pby3ZaKOKSmr+RiuQMqhMTR0zAJPiNNeikdMY2ZG7E675FdJiEt CKXw+udjPKh/SKr9LboB+fAdN4pD77iw3rXb4qCiux/jJ9HZ0XTo/qGPVzGegDY4s7JS x9Xvrs8I5h9cTRqmTPLsx0W0+XcupnKXWlrdMFzUIPsRTuHO9ZbXDDSApx9mARdRSucJ P+yQ== X-Forwarded-Encrypted: i=1; AJvYcCVapePf80G8bEt6HOYKZVAQ0OrzZfk3Bh82w44xxoAm4YybVQaDOo+1zRRWxVc6BR2bahNyMFWhscDrTBeW@lists.postgresql.org X-Gm-Message-State: AOJu0Yy0CEON/OwgjGRemQsAcngzP0KQEkncCn1O1m4/9Vu0yInpd4Hf E/hmIKkDin69StpxvQIqWHVbxSk1C3U7pWf3ThVXJ6/DA2llWK9t7IL0IFdKdVNn/jWFNQrR8vp 752yRYpP5kqZjbyghm7FSHyK22IY= X-Google-Smtp-Source: AGHT+IGYOMmfjzPhHDaeynIJg5V6WgyuzhY5quJcTSk00KETWjsMHD4+eVfsGcDG3PtJzI7I1iCNbplMsjZwPoiqiJI= X-Received: by 2002:a05:6512:1325:b0:533:42ae:c985 with SMTP id 2adb3069b0e04-53678fbf06dmr386123e87.25.1726088454081; Wed, 11 Sep 2024 14:00:54 -0700 (PDT) MIME-Version: 1.0 References: <169880504467.94392.3769687331705514588.pgcf@coridan.postgresql.org> <87a5rry0bz.fsf@163.com> <87h6jpob9x.fsf@163.com> <87r0hmvuvr.fsf@163.com> <8102ff5b-b156-409e-a48f-e53e63a39b36@eisentraut.org> <8734t6c5rh.fsf@163.com> <87o7bn7z56.fsf@163.com> <875xx197bp.fsf@163.com> <87ttk0lgcx.fsf@163.com> In-Reply-To: <87ttk0lgcx.fsf@163.com> From: David Rowley Date: Thu, 12 Sep 2024 09:00:41 +1200 Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Andy Fan Cc: Peter Eisentraut , Amit Langote , Alvaro Herrera , jian he , Chapman Flack , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002836bd0621de49c6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002836bd0621de49c6 Content-Type: text/plain; charset="UTF-8" On Wed, 17 Apr 2024 at 17:17, Andy Fan wrote: > rebase to the latest master again. There's a lot of complexity in the v18 patch that I don't understand the need for. I imagined you'd the patch should create a SupportRequestSimplify support function for jsonb_numeric() that checks if the input expression is an OpExpr with funcid of jsonb_object_field(). All you do then is ditch the cast and change the OpExpr to call a new function named jsonb_object_field_numeric() which returns the val.numeric directly. Likely the same support function could handle jsonb casts to other types too, in which case you'd just call some other function, e.g jsonb_object_field_timestamp() or jsonb_object_field_boolean(). Can you explain why the additional complexity is needed over what's in the attached patch? David --0000000000002836bd0621de49c6 Content-Type: text/plain; charset="US-ASCII"; name="jsonb_numeric_support.patch.txt" Content-Disposition: attachment; filename="jsonb_numeric_support.patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0ycdiwo0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2pzb25iLmMKaW5kZXggOTI4NTUyZDU1MS4uN2I2MGIzNjE4OSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25iLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2pzb25iLmMKQEAgLTE4LDcgKzE4LDkgQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5j bHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJub2Rlcy9zdXBwb3J0bm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2lu Y2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbi5oIgogI2luY2x1 ZGUgInV0aWxzL2pzb25iLmgiCiAjaW5jbHVkZSAidXRpbHMvanNvbmZ1bmNzLmgiCkBAIC0yMDY5 LDYgKzIwNzEsNjQgQEAganNvbmJfbnVtZXJpYyhQR19GVU5DVElPTl9BUkdTKQogCVBHX1JFVFVS Tl9OVU1FUklDKHJldFZhbHVlKTsKIH0KIAorRGF0dW0KK2pzb25iX29iamVjdF9maWVsZF9udW1l cmljKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSnNvbmIgKmpiID0gUEdfR0VUQVJHX0pTT05CX1Ao MCk7CisJdGV4dCAqa2V5ID0gUEdfR0VUQVJHX1RFWFRfUFAoMSk7CisJSnNvbmJWYWx1ZSAqdjsK KwlKc29uYlZhbHVlIHZidWY7CisKKwlpZiAoIUpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKKwkJUEdf UkVUVVJOX05VTEwoKTsKKworCXYgPSBnZXRLZXlKc29uVmFsdWVGcm9tQ29udGFpbmVyKCZqYi0+ cm9vdCwKKwkJCQkJCQkJCSBWQVJEQVRBX0FOWShrZXkpLAorCQkJCQkJCQkJIFZBUlNJWkVfQU5Z X0VYSERSKGtleSksCisJCQkJCQkJCQkgJnZidWYpOworCisJaWYgKHYgIT0gTlVMTCkKKwl7CisJ CWlmICh2LT50eXBlID09IGpidk51bWVyaWMpCisJCQlQR19SRVRVUk5fTlVNRVJJQyh2LT52YWwu bnVtZXJpYyk7CisKKwkJY2Fubm90Q2FzdEpzb25iVmFsdWUodi0+dHlwZSwgIm51bWVyaWMiKTsK Kwl9CisKKwlQR19SRVRVUk5fTlVMTCgpOworfQorCitEYXR1bQoranNvbmJfbnVtZXJpY19zdXBw b3J0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTm9kZQkgICAqcmF3cmVxID0gKE5vZGUgKikgUEdf R0VUQVJHX1BPSU5URVIoMCk7CisJTm9kZSAqcmV0ID0gTlVMTDsKKworCWlmIChJc0EocmF3cmVx LCBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5KSkKKwl7CisJCVN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkg KnJlcSA9IChTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5ICopIHJhd3JlcTsKKwkJRnVuY0V4cHIgKmZ1 bmMgPSByZXEtPmZjYWxsOworCQlPcEV4cHIgKm9wZXhwciA9IGxpc3RfbnRoKGZ1bmMtPmFyZ3Ms IDApOworCisJCS8qCisJCSAqIFRyYW5zZm9ybSBqc29uYl9vYmplY3RfZmllbGQgY2FsbHMgdGhh dCBkaXJlY3RseSBjYXN0IHRvIG51bWVyaWMKKwkJICogaW50byBhIGRpcmVjdCBjYWxsIHRvIGpz b25iX29iamVjdF9maWVsZF9udW1lcmljLiAgVGhpcyBhbGxvd3MgdXMKKwkJICogdG8gZGlyZWN0 bHkgYWNjZXNzIHRoZSBudW1lcmljIGZpZWxkIGFuZCByZXR1cm4gaXQgZGlyZWN0bHkgdGh1cwor CQkgKiBzYXZpbmcgY2FzdGluZyBmcm9tIGpzb25iIHRvIG51bWVyaWMuCisJCSAqLworCQlpZiAo SXNBKG9wZXhwciwgT3BFeHByKSAmJiBvcGV4cHItPm9wZnVuY2lkID09IEZfSlNPTkJfT0JKRUNU X0ZJRUxEKQorCQl7CisJCQlvcGV4cHItPm9wZnVuY2lkID0gRl9KU09OQl9PQkpFQ1RfRklFTERf TlVNRVJJQzsKKwkJCVBHX1JFVFVSTl9QT0lOVEVSKG9wZXhwcik7CisJCX0KKworCQlQR19SRVRV Uk5fUE9JTlRFUihyZXQpOworCX0KKworCVBHX1JFVFVSTl9QT0lOVEVSKHJldCk7Cit9CisKKwog RGF0dW0KIGpzb25iX2ludDIoUEdfRlVOQ1RJT05fQVJHUykKIHsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2Mu ZGF0CmluZGV4IGZmNTQzNmFjYWMuLjEwYWVkMGIwYjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRh dApAQCAtNDY0Miw4ICs0NjQyLDEyIEBACiAgIHByb25hbWUgPT4gJ2Jvb2wnLCBwcm9yZXR0eXBl ID0+ICdib29sJywgcHJvYXJndHlwZXMgPT4gJ2pzb25iJywKICAgcHJvc3JjID0+ICdqc29uYl9i b29sJyB9LAogeyBvaWQgPT4gJzM0NDknLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBudW1l cmljJywKLSAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHByb3JldHR5cGUgPT4gJ251bWVyaWMnLCBw cm9hcmd0eXBlcyA9PiAnanNvbmInLAorICBwcm9uYW1lID0+ICdudW1lcmljJywgcHJvc3VwcG9y dCA9PiAnanNvbmJfbnVtZXJpY19zdXBwb3J0JywKKyAgcHJvcmV0dHlwZSA9PiAnbnVtZXJpYycs IHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfbnVtZXJpYycgfSwK K3sgb2lkID0+ICc4Mzk0JywgZGVzY3IgPT4gJ3BsYW5uZXIgc3VwcG9ydCBmb3IganNvbmIgY2Fz dGluZyBzdXBwb3J0JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfbnVtZXJpY19zdXBwb3J0JywgIHBy b3JldHR5cGUgPT4gJ2ludGVybmFsJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJv c3JjID0+ICdqc29uYl9udW1lcmljX3N1cHBvcnQnIH0sCiB7IG9pZCA9PiAnMzQ1MCcsIGRlc2Ny ID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDInLAogICBwcm9uYW1lID0+ICdpbnQyJywgcHJvcmV0 dHlwZSA9PiAnaW50MicsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNv bmJfaW50MicgfSwKQEAgLTEwMDgzLDYgKzEwMDg3LDEwIEBACiAgIHByb2FyZ3R5cGVzID0+ICdq c29uYiBfdGV4dCcsIHByb2FsbGFyZ3R5cGVzID0+ICd7anNvbmIsX3RleHR9JywKICAgcHJvYXJn bW9kZXMgPT4gJ3tpLHZ9JywgcHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24scGF0aF9lbGVtc30n LAogICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3RfcGF0aCcgfSwKK3sgb2lkID0+ICc4Mzk1JywK KyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX251bWVyaWMnLCBwcm9yZXR0eXBlID0+ ICdudW1lcmljJywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIHRleHQnLCBwcm9hcmduYW1lcyA9 PiAne2Zyb21fanNvbiwgZmllbGRfbmFtZX0nLAorICBwcm9zcmMgPT4gJ2pzb25iX29iamVjdF9m aWVsZF9udW1lcmljJyB9LAogeyBvaWQgPT4gJzM5NDAnLCBkZXNjciA9PiAnZ2V0IHZhbHVlIGZy b20ganNvbmIgYXMgdGV4dCB3aXRoIHBhdGggZWxlbWVudHMnLAogICBwcm9uYW1lID0+ICdqc29u Yl9leHRyYWN0X3BhdGhfdGV4dCcsIHByb3ZhcmlhZGljID0+ICd0ZXh0JywKICAgcHJvcmV0dHlw ZSA9PiAndGV4dCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsCg== --0000000000002836bd0621de49c6--