Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eId6t-0002ng-Cl for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Nov 2017 16:15:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eId6s-0004Lf-MQ for pgsql-hackers@arkaria.postgresql.org; Sat, 25 Nov 2017 16:15:18 +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 1eId6s-0004LO-G6 for pgsql-hackers@lists.postgresql.org; Sat, 25 Nov 2017 16:15:18 +0000 Received: from mail-pg0-x236.google.com ([2607:f8b0:400e:c05::236]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1eId6k-0001VV-BU for pgsql-hackers@postgresql.org; Sat, 25 Nov 2017 16:15:18 +0000 Received: by mail-pg0-x236.google.com with SMTP id s11so16881166pgc.5 for ; Sat, 25 Nov 2017 08:15:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=yVsMkPvN/CFC+/UpYWvwxQ5eajh0delJb908FhYXd48=; b=fdTcA6UfPQfgJEx1z7hQoNFJ2nRGZu8UK6UPZfs3SewtEYvS+mkQQQNIK8bm89cStW qLNyegrwGFHzgjdjsW87iucggZFH7TgykHH5zpbjPVIeV33B1oi8Eue0gb/7oUTJfX8h YAy3s8Q6puCTLjFpMJ8bkbkKm/+Z4cCYGW4UK26EJCER7o6ViUkV7wxO3PWlApNgFLLK 5gRyvdckaci3NHxGlQ7Xhtc1ee/9F/cw92ik0ft4p1urqpEoFiohRMukbQKgntLn+ogf fKRUcQME0Gn59iKibPydadVQBbKw0RBQLjwmvkEUHba8WTmhxuJgOxKh5/hTuJYCnloq gIlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=yVsMkPvN/CFC+/UpYWvwxQ5eajh0delJb908FhYXd48=; b=dq1Z3YwmrQqilnGfY/wEHI15NDaSYe/fqmtlILm8Vbnl8Zs+Ja5V/NUCSKQDXnviv0 ZZbEwvVM5R8oZx0Z6qzQy5wCOPOlhKYl/Jxjg4vi+a56RIwpIp2AIkTKL2KZPvpxecHY CQFI6cYkbqgNpJ+lmbwJm9sXcI6tZ4nWAn3WTtFATV0zIerDgCX9Mn9pZRih0leJS/64 J4Xk6AzHgmdj/HfhGw9XjqRWG/v3QGfIRFaYThbzICmqrefvsO9V/aRM5iOrxkchmYK6 KfIHjGbD5NcvuIfeohpZCWQ4Ap7hUH7brvFKHi6fTxwatoL38Mrtb07iopRhqUMHWm+M oZ0A== X-Gm-Message-State: AJaThX5KX4cwlseMFbu21qvm9Tye6GOVrqt7Lx4yM3TeITWvhB8dM3h9 51FFawcuq6cim3qxR+bELlk= X-Google-Smtp-Source: AGs4zMaPdQm1olrXRIOfnwrlJI5J09jG1NUaCJOuG/H/+nqGzbDazZVigCtrTVdhglU1hF2+PKlqfg== X-Received: by 10.99.123.14 with SMTP id w14mr31509495pgc.172.1511626507307; Sat, 25 Nov 2017 08:15:07 -0800 (PST) Received: from [192.168.1.10] (static-50-53-66-203.bvtn.or.frontiernet.net. [50.53.66.203]) by smtp.gmail.com with ESMTPSA id m11sm37514194pfh.35.2017.11.25.08.15.06 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 25 Nov 2017 08:15:06 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Subject: Re: [HACKERS] PATCH: multivariate histograms and MCV lists From: Mark Dilger In-Reply-To: Date: Sat, 25 Nov 2017 08:15:05 -0800 Cc: Adrien Nayrat , Pg Hackers Content-Transfer-Encoding: quoted-printable Message-Id: <0895FFB4-DEB7-459B-ABD2-E7855D0291A8@gmail.com> References: <31ee8686-6d62-7f10-4129-7580ec74a710@dalibo.com> <340ffd44-2d67-d39d-e54f-5a97a842cd3a@2ndquadrant.com> <67EAB5B3-F9FB-4753-8102-4D77DCFFFCD4@gmail.com> To: Tomas Vondra X-Mailer: Apple Mail (2.3124) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk > On Nov 18, 2017, at 12:28 PM, Tomas Vondra = wrote: >=20 > Hi, >=20 > Attached is an updated version of the patch, adopting the psql = describe > changes introduced by 471d55859c11b. >=20 > regards >=20 > --=20 > Tomas Vondra http://www.2ndQuadrant.com > PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services > = <0001-multivariate-MCV-lists.patch.gz><0002-multivariate-histograms.patch.= gz> Thanks, Tomas, again for your work on this feature. Applying just the 0001-multivariate-MCV-lists.patch to the current = master, and then extending the stats_ext.sql test as follows, I am able to trigger = an error, "ERROR: operator 4294934272 is not a valid ordering operator". =20 diff --git a/src/test/regress/sql/stats_ext.sql = b/src/test/regress/sql/stats_ext.sql index e9902ced5c..5083dc05e6 100644 --- a/src/test/regress/sql/stats_ext.sql +++ b/src/test/regress/sql/stats_ext.sql @@ -402,4 +402,22 @@ EXPLAIN (COSTS OFF) EXPLAIN (COSTS OFF) SELECT * FROM mcv_lists WHERE a IS NULL AND b IS NULL AND c IS NULL; =20 -RESET random_page_cost; +DROP TABLE mcv_lists;=20 +=20 +CREATE TABLE mcv_lists ( + a NUMERIC[], + b NUMERIC[] +); +CREATE STATISTICS mcv_lists_stats (mcv) ON a, b FROM mcv_lists; +INSERT INTO mcv_lists (a, b) + (SELECT array_agg(gs::numeric) AS a, array_agg(gs::numeric) AS b + FROM generate_series(1,1000) gs + ); +ANALYZE mcv_lists; +INSERT INTO mcv_lists (a, b) + (SELECT array_agg(gs::numeric) AS a, array_agg(gs::numeric) AS b + FROM generate_series(1,1000) gs + ); +ANALYZE mcv_lists; + +DROP TABLE mcv_lists; Which gives me the following regression.diffs: *** = /Users/mark/master/postgresql/src/test/regress/expected/stats_ext.out = 2017-11-25 08:06:37.000000000 -0800 --- /Users/mark/master/postgresql/src/test/regress/results/stats_ext.out = 2017-11-25 08:10:18.000000000 -0800 *************** *** 721,724 **** Index Cond: ((a IS NULL) AND (b IS NULL)) (5 rows) =20 ! RESET random_page_cost; --- 721,741 ---- Index Cond: ((a IS NULL) AND (b IS NULL)) (5 rows) =20 ! DROP TABLE mcv_lists; ! CREATE TABLE mcv_lists ( ! a NUMERIC[], ! b NUMERIC[] ! ); ! CREATE STATISTICS mcv_lists_stats (mcv) ON a, b FROM mcv_lists; ! INSERT INTO mcv_lists (a, b) ! (SELECT array_agg(gs::numeric) AS a, array_agg(gs::numeric) AS b ! FROM generate_series(1,1000) gs ! ); ! ANALYZE mcv_lists; ! INSERT INTO mcv_lists (a, b) ! (SELECT array_agg(gs::numeric) AS a, array_agg(gs::numeric) AS b ! FROM generate_series(1,1000) gs ! ); ! ANALYZE mcv_lists; ! ERROR: operator 4294934272 is not a valid ordering operator ! DROP TABLE mcv_lists; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D