From: | Marc Cousin <cousinmarc(at)gmail(dot)com> |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Subject: | cannot restore schema with is not distinct from on hstore since PG 9.6.8 |
Date: | 2018-07-09 13:52:26 |
Message-ID: | ffefc172-a487-aa87-a0e7-472bf29735c8@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
Hi,
This is a really simple test case, I think it's an unintended
consequence of CVE-2018-1058:
demo=# create extension hstore;
CREATE EXTENSION
demo=# create table test (a hstore);
CREATE TABLE
demo=# create index idx_test_not_distinct on test(a) where a is not
distinct from '';
CREATE INDEX
Then dump this database with a simple pg_dump and try to restore it in
another database:
9.6.9/0 [marc(at)marco-portable pg_dump]$ psql -e demo2 -f /tmp/demo_dump
SET statement_timeout = 0;
SET
SET lock_timeout = 0;
SET
SET idle_in_transaction_session_timeout = 0;
SET
SET client_encoding = 'UTF8';
SET
SET standard_conforming_strings = on;
SET
SELECT pg_catalog.set_config('search_path', '', false);
set_config
------------
(1 row)
SET check_function_bodies = false;
SET
SET client_min_messages = warning;
SET
SET row_security = off;
SET
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
CREATE EXTENSION
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
COMMENT
CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
CREATE EXTENSION
COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key,
value) pairs';
COMMENT
SET default_tablespace = '';
SET
SET default_with_oids = false;
SET
CREATE TABLE public.test (
a public.hstore
);
CREATE TABLE
ALTER TABLE public.test OWNER TO marc;
ALTER TABLE
COPY public.test (a) FROM stdin;
COPY 0
CREATE INDEX idx_test_not_distinct ON public.test USING btree (a) WHERE
(NOT (a IS DISTINCT FROM ''::public.hstore));
psql:/tmp/demo_bug:73: ERROR: operator does not exist: public.hstore =
public.hstore
LINE 1: ...inct ON public.test USING btree (a) WHERE (NOT (a IS DISTINC...
^
HINT: No operator matches the given name and argument type(s). You
might need to add explicit type casts.
As we are working on the 9.6 branch, it appeared after upgrading to
9.6.8 and 9.6.9 following CVE-2018-1058 I presume. Removing the
set_config fixes it (but removes the security fix...)
Of course, my use case is not this simple example, it's failing on a
trigger WHEN ( old.hstorecol is distinct from new.hstorecol )
Regards
Marc
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry Dolgov | 2018-07-09 14:04:11 | LLVM jit and matview |
Previous Message | Mohammed Shahid Nawaz | 2018-07-09 09:59:50 | Re: BUG #15265: The program "initdb" is needed by pg_ctl but was not found in the same directory as "pg_ctl". |
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitry Dolgov | 2018-07-09 14:04:11 | LLVM jit and matview |
Previous Message | Heikki Linnakangas | 2018-07-09 13:49:36 | Re: Changing WAL Header to reduce contention during ReserveXLogInsertLocation() |