Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cE69j-0002BV-3f for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Dec 2016 03:10:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1cE69i-0002jC-Md for pgsql-hackers@arkaria.postgresql.org; Tue, 06 Dec 2016 03:10:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cE69h-0002hG-M6 for pgsql-hackers@postgresql.org; Tue, 06 Dec 2016 03:10:57 +0000 Received: from mail-sn1nam02on0048.outbound.protection.outlook.com ([104.47.36.48] helo=NAM02-SN1-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1cE69c-00063v-JT for pgsql-hackers@postgresql.org; Tue, 06 Dec 2016 03:10:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=BlueTreble.onmicrosoft.com; s=selector1-bluetreble-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=9NOI2A60TxGgiPWV7fASEuH2o8ZcFSzuOHmeUBynafo=; b=L9GJtK7N+Lu8fkKVTmilCQXSNNAFj/f6meCMKHa2fsGKNbmVS5YLZDsKzG+ktmQ6+bW4aDHSMKfyEdVXvxnfvdTpg/KOWL/3eCsM6G3EOx46DVdQ1igU5QQ08OTJl5h5LP5RZ1anW4qgRlM8QtYprC2Tvo2Nxaq1eTH8AZTm0Fo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jim.Nasby@bluetreble.com; Received: from decina.attlocal.net (2602:306:ce8b:3460:6dda:6127:b674:341a) by DM5PR11MB1641.namprd11.prod.outlook.com (10.172.38.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Tue, 6 Dec 2016 03:10:46 +0000 Subject: Re: Tackling JsonPath support To: Nico Williams , Christian Convey References: <20681.1479057226@sss.pgh.pa.us> <20161128183819.GB11117@localhost> Cc: Pavel Stehule , Tom Lane , "pgsql-hackers@postgresql.org" From: Jim Nasby Message-ID: <06210946-2563-acce-3f77-fa4a17e6d03f@BlueTreble.com> Date: Mon, 5 Dec 2016 21:10:41 -0600 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20161128183819.GB11117@localhost> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [2602:306:ce8b:3460:6dda:6127:b674:341a] X-ClientProxiedBy: BN6PR11CA0035.namprd11.prod.outlook.com (10.173.25.21) To DM5PR11MB1641.namprd11.prod.outlook.com (10.172.38.12) X-MS-Office365-Filtering-Correlation-Id: 32a8bf08-070e-4be9-3c86-08d41d8579b6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:DM5PR11MB1641; X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1641;3:mtxInvzJeSYZBj6iFJJDw5zWSrLZGRrYvLuYXWnf6H5bd78VjdJJ7HDdvfoTiXgCknkRdTFpxDrLnine2H1RV2kyrJEFOGyxCb13rKnLq3pIiXMx8v7UMglZbPOD8tyAy1t+ieXOMtpps9OXENU0wk2iceXhnvjCV36FOoYZ5LcdGOdtbMAKkEvPDFXUsnq5LbngGH+OJxzzUNjZobWP0EuPqyEJyQhw/OlBcXvsmEUQrT47gzG0SCIz42mTkpH9k4x6zG8GdyYD7wwAvW9+rA==;25:/kIis0QEOoTNr1+QT2kW/ywwVdBqgUEWfQYolWywHGZoLrXiyFYDHWuK8Q4U1ENCrk4E90UDCS7QDaQ/mIbI+TQvyNHYAHc+b0SLKIM6zSysos7sGCtfQ7jNVfYZVNFYqdVrX4Wil1/lW9ilKB2UBSZfHRTOCQiH27SeuIB0qliD5Nsy3wCWPnvWRoR3IgJCHe5pQ5hK1mF4ZNqjQJXQ+VXbED1eKD7irDBsOaNMLBuVbLqMXps38sIKP94HHq2SSSl71VHn7sa//ybTzpDIDEMyS7lVCypXenxCpxu00p6s6mJ/Gb3BvdrB4QZ7QGOwHSGYEIDtuKuNq36IiI6UW7+u3TlDJ2e6v6Ey1sk93UN5m+HOJgE1y2jxkG9BSZYOKJ3Ej6i/oDkD24J53elgxqeubqXfJpytydfIj8FRBzZFu2Oeju7P2P7KYni31WUDELgvaqsMN2OZ7uReyKpsgg== X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1641;31:M0HxZlA2+p0OwNnu4em2XAoECI+rK036BTF5MYbSjRGZ7I8lNycws//vOtd/HELSBWNEahYJAyQW7UUKd6vv14tgqRD7LX55SgoCGGuYTYBNwbn0QKpYxGNWb8u8RY0uAZUE4tciI78Xb48wtDiw5wN0VwJpxvZywvjtC7LFxpHDFXT4TC6j53mMFLqvkuxxyo8BO5HPWLQ2j0lTKSMVv4k1uGCY27NUG2CXQKJG5u3RX0N5hetQuo6hDndh66Z2+Fuo0nmjofTPvbn+j/t5y+K5QUcB4Jqy3N0O/L+ecgs=;4:QDI7h2EghQQ2IiuObrVK6bIUUoUBsxvLfEiMPbpqqkda+eabDn6FaELjJkhpFo3uPRps42NPiCwhximL0t9CClE6jZkuJCIfHXX4EDgIQBx9Lg/q40zzlI1FjWZJDkGWfa/A3hlhC5RyOIoPer+3FlIQ3dgt7RFQQcucIPH+HMM2Mz961oLjPE+TdZTXkKt6Lb/sOpvO3risbDkwR306hWSmw9BlNscWAjrgkVuIvcFlLh6f6AqpG4ieKcxRJSB+RypAc9ckBhBViTmq06dENi24KUl+bRSiLan8Xr+uPLRNfQovdfCbWlJiDhJeCjd7KXBqldeDFpKDmaljofcpLYrvfoL5MZ6kci7CcZzvaBmPKw42aUYADX5ByuxTH8O33oJDxpIocy3JhCF3cv15cy3By/00oqWUCHk63IEWhKXEkClU/JM5AC3MRQeMIsqIWpBtrKA+tOujbqgzF7uY03xhFLneh5wY18rT/jwDhd9iqfmTqJh1JLGwf1g3iOIVsWEmkjMmtuJpKWgaLx7x6y6CB08BqYd/cUe8M6YpcvrjjjuxNIpGXN73ILrZcF2qwUM1Qmu7u5cjGAK3m6pgSkyNvDVLbafLkBlsY12r/xqLrRz8lFXagtM4bTi6Vwpp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041248)(20161123562025)(20161123555025)(2016111802025)(20161123564025)(20161123560025)(6043046)(6072148);SRVR:DM5PR11MB1641;BCL:0;PCL:0;RULEID:;SRVR:DM5PR11MB1641; X-Forefront-PRVS: 01480965DA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(24454002)(377454003)(81156014)(7736002)(6512006)(6506006)(6116002)(93886004)(6486002)(733004)(7846002)(50466002)(2906002)(68736007)(39060400001)(229853002)(83506001)(38730400001)(47776003)(39410400001)(65806001)(92566002)(64126003)(86362001)(39830400001)(31696002)(65826007)(39450400002)(36756003)(65956001)(76176999)(53416004)(42186005)(6666003)(106356001)(101416001)(105586002)(230700001)(16601075003)(5660300001)(50986999)(54356999)(23746002)(2950100002)(69596002)(8676002)(305945005)(189998001)(5001770100001)(33646002)(4326007)(31686004)(97736004)(4001350100001)(81166006)(85282002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR11MB1641;H:decina.attlocal.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: bluetreble.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DM5PR11MB1641;23:gyK75kV8EFn7JTfFSPr/YL78Gb+zFDBTEFZXa?= =?Windows-1252?Q?W2Ip8ng7uypweZDbkPhqQHc3ifbM4ITLuc7PRIdIfImlQOn89CYFoU9U?= =?Windows-1252?Q?22XfYjLDNSbGAvkVCxJRHUsRx629vE5+uczg2TEuCpcVvvfIsKtN62RZ?= =?Windows-1252?Q?LL4Xwi2jlJcpk8LecMBMsUht+JeH2Uvn9ZJ3NhdCwjZmgFVSXpAEdqiF?= =?Windows-1252?Q?B/w4c1yWItU8sH2tCyIL6QQflL22HKGVa0uUh/bS4xqRvQvZNMhq6gUP?= =?Windows-1252?Q?h4+1nTDVW6at8WHqGbZFz7iWjRfQf81faz3E1G6gc1Oo6qGhQ3yUpMqG?= =?Windows-1252?Q?POT/Hqbdp7J2mlrUfARtcC0WNJT2kiW6n8nqMOlNMxjBPtzeKcRGzEn6?= =?Windows-1252?Q?fIJQVS3RWz1VKRSskIjI8M/AkFs/cGQ671oUzv9GCSHr+FPHvPGyf0sN?= =?Windows-1252?Q?p/KJ3K5ieSIPz+IGjxvJt0aRFXetygTG8yUqE7Bf4RZRsqSGDa9qiNtw?= =?Windows-1252?Q?uAfFYfzWL2evSJcUcG+YXtK0YlciLwDIbZjsTNDK43GmH+xrMAVP/IAu?= =?Windows-1252?Q?4+cIfe4xZUepX8+Fd6CPg3vSL50ok7Zldecm6VxIBWCZxYBwmF/xxTt7?= =?Windows-1252?Q?iN7nza0AEdX1zRZLjIqheRXgR0CLhLG/vQ5H6NeGfdHseXbZC0hHmItS?= =?Windows-1252?Q?2POQiBRp60hiSPu8Av1ZHZ6c1s+9Rvj10flvroOvKdEQAU4Dh96mheFm?= =?Windows-1252?Q?SiR3vlaYjlxn/Hl548CTcuGpmbxV9SMcz2d7RHog6/uPUlhEeMtZdr1T?= =?Windows-1252?Q?SyihuUl5QC5Tan6sGJqB/8duNnpD0duHV7s/owz4o5mH0muKkjozK1b/?= =?Windows-1252?Q?QQ/p3zH0TXzxYYWG1V8gXPrf+ffuWD3StFkG9ba954BkiIsgMUbTLUTy?= =?Windows-1252?Q?krJ+YYLeZJO76NUowtnAkXBJ30NCDPgko5Oo4wxxdSrPRlTtCVGOr5h8?= =?Windows-1252?Q?STZXaeXvsXyVrPJIBgokfjPtJniXW3lD3dSS2Un7aIKV22RE4vSEP0zT?= =?Windows-1252?Q?H1j1z5wIuYYNlawMrPrJPVKehaWz5TTwB+s6CY4e5gC/vYYUKMUmfFLM?= =?Windows-1252?Q?shPZiOrgKj3MxWnsmD3+44OqZoMGLVi0Fy2tGSfjN1RgVULSoJdXwc4T?= =?Windows-1252?Q?8I7wXAITsAu6vEhyvBg2z5HNjbZQEQDpYomJCDQbljhfA3PcCjNCvQIj?= =?Windows-1252?Q?/qcAL/a+/7QZwKTkUJrQ5YvT4WIgVthzwpL1uqd43nXilzFCqzZ2bjab?= =?Windows-1252?Q?kvWPAhL/uAQF7iMIuISEAgAGS2yNx+5lRWV9pxS38aBTxD0cml09hKuU?= =?Windows-1252?Q?3VTRojUHl7CHi8p2Gbv/haPdgmnB0MUiUIsP/WTZObjkJ6M+Vq/tfmpu?= =?Windows-1252?Q?VeQ4tJH+vyUVrD0rQgCzAfKJrm209aJw2LJ5pONM2rF6N/ECCRa7BH5A?= =?Windows-1252?Q?3kOjVGJPqU+l0wECbCysXRGdiDNQLyT1ZDlCUY6btOAHBXeAVSlkfvQF?= =?Windows-1252?Q?/Z5EyACfpz5r1kQatX1apUbxJYOPzIjQo0O6BgsnrwG6eTVMJE5/HzUD?= =?Windows-1252?B?QT09?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1641;6:2HgiXr3flZWvx6D0/3ZK02IBD0aKkFPAjUjMv8+1GNV/SvcO4fLI0NjWcLm1kkKkgtk+48H6RHkjJjMviEytdCybda8w/calzQAqSPpeI1qPlZlLbji2OJy2WUOStP8/MyC1tdcw7fDW1IBRVE3SuDHrERupyAKTXNJ34R0pH5Yb5/zQbCx5Giv3scrPX6BOW9l5HwWS2zWIxnSfhyUAf783+HptgbGJSr7+z91n2RE9JAV4F6drvDHtV8xENm59k5XIIRDq1G9GspZ0Zj6WldwuIU8Vnz7QPNvSWActit2GPRN4kDO4XWf7p68qz0enjjFS0t/KpnG5Zcfv0PlogmTD2UabKY/tpH/qVSI/CGjBQLQ0oPo0GqChvcQZ14hmnz0X8w/P4e74//Q6YkXD04TtEMZ3N+2LtW7KzffhIY+x7NprbyTxBsne6fxvEXObp7Rbo7WLq4w9wAO1cmBVW5DndLbblWRi09NpZAtqdJU=;5:2hbGgWSsSABmbhpxPuuKeM2smWU09ZPMWucbcXjtZiEif7NocuvNfzZmDajEVWqOoAr/7+1Umx5QIWsEqIlJqKjgnkhChdD15mM57x5mfjnIZTxMS5uFKJ0KxgHITQ84ZB4KfUdzO8rSEejuIgEN2A==;24:jAI6/1ygKgc7oI7j9hs8Kqq84O6KO47IxKQspvg1eFHWToE80palAVqoxuS1kN7z/5UdTFtYC/wGngjqs/sI3FqXLXkHcNwBUgXJKihifR8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1641;7:kj6z30V8aIIlLIG24001yrOtOF8i+3RurNqQrJiMV35Fe5AqWR9EINvhidLXLJMW8UftnTVApsleEI5HQr+dhoRA6VIfdZ2C75Hkl+LiDVdjkpcOBLQmk+U/GEItdX3zeowuAnRzFg2Mi2gOv20QgQsSCyhmsCqME0/+SptnsKCOUerRS8VwEDFHrREix6HqZXY+mBR58BzybZ7y51g2WKxDGXbCCQ4tdCr3450Fakqr7BpxLfUPsX6IkHb0zXSxfPGNPBSCzNQT2ZJm4ZfQZFmkMuqJ980aXqNdupdXshhn7NS5ShTgugcJuy6B3B0+6lz+Q3pYsxc1R5gNbwFg4un4GZMp5AUITbNnmbM6AOmAd7vyBYh1By8SchMXU20CkmYVvqb3tpgFe80pfyKtYPEUwu6jPE+IBIKneXuqibEg5V4GNymN3v3ynsBrTQUAZAaAUan5SOv96A7Vhq4mFg== X-OriginatorOrg: bluetreble.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2016 03:10:46.7157 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1641 X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org On 11/28/16 12:38 PM, Nico Williams wrote: > The internal representation of JSON data is bound to be > completely different, no doubt Actually, that could be a good thing. The internal storage of JSONB is optimized for compress-ability, but that imposes a substantial overhead to calls that are searching for a particular key in a document. This gets *really* bad if you make nested expansion calls (ie: json->'a'->'b'). ExpandedObject support means we're not stuck with the same representation in-memory as on-disk though. While we could create our own internal representation, it seems a bit silly to reinvent that wheel if we don't need to. Bonus points if it would also throw an error if you fed it duplicated object keys. -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com 855-TREBLE2 (855-873-2532) -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers