Re: [ADMIN] Repeatable crash in pg_dump (with -d2 info)

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: [ADMIN] Repeatable crash in pg_dump (with -d2 info)
Дата
Msg-id 29791.1322528434@sss.pgh.pa.us
обсуждение исходный текст
Ответы Re: [ADMIN] Repeatable crash in pg_dump (with -d2 info)  (David Schnur <dnschnur@gmail.com>)
Список pgsql-bugs
David Schnur <dnschnur@gmail.com> writes:
> I probably can't get a stack trace, but I was able to reproduce it with
> just that function.  Without the function, pg_dump works fine.  I can DROP
> the function, pg_dump works, then add it back again and pg_dump crashes.

Hmph.  I still can't reproduce this here, which seems to mean one of
three things:
1. We fixed this since 8.3.15 (still doesn't seem likely).
2. It's specific to Windows.
3. It's specific to the pg_dump build you are using.

I wonder whether anyone else can get this to happen on the strength of
David's description?

>  Here are my steps:

> initdb -A md5 --no-locale -E UTF8 -U testuser -D
> "C:\Users\David\Desktop\testdb" -W

> pg_ctl -U testuser -D "C:\Users\David\Desktop\testdb" start

> CREATE DATABASE testdb OWNER testuser;

> CREATE OR REPLACE FUNCTION datastore_unpack(
>     data_times TIMESTAMP WITH TIME ZONE[],
>     data_values DOUBLE PRECISION[],
>     OUT data_time TIMESTAMP WITH TIME ZONE,
>     OUT data_value DOUBLE PRECISION
> ) RETURNS SETOF RECORD AS $$
>     SELECT $1[rowx] AS data_time, $2[rowx] AS data_value
>     FROM generate_series(1, array_upper($1, 1)) AS rowx;
> $$ LANGUAGE SQL STABLE;

> pg_dump -v -F c -x -O -f "C:\Users\David\Desktop\dumptest" -U testuser
> testdb

> Here's the output from pg_dump:

> pg_dump: reading schemas
> pg_dump: reading user-defined functions
> pg_dump: reading user-defined types
> pg_dump: reading procedural languages
> pg_dump: reading user-defined aggregate functions
> pg_dump: reading user-defined operators
> pg_dump: reading user-defined operator classes
> pg_dump: reading user-defined text search parsers
> pg_dump: reading user-defined text search templates
> pg_dump: reading user-defined text search dictionaries
> pg_dump: reading user-defined text search configurations
> pg_dump: reading user-defined operator families
> pg_dump: reading user-defined conversions
> pg_dump: reading user-defined tables
> pg_dump: reading table inheritance information
> pg_dump: reading rewrite rules
> pg_dump: reading type casts
> pg_dump: finding inheritance relationships
> pg_dump: reading column info for interesting tables
> pg_dump: flagging inherited columns in subtables
> pg_dump: reading indexes
> pg_dump: reading constraints
> pg_dump: reading triggers
> pg_dump: reading dependency data
> pg_dump: saving encoding = UTF8
> pg_dump: saving standard_conforming_strings = off
> pg_dump: saving database definition

> And here's the output from the postmaster:

> LOG:  statement: SET DATESTYLE = ISO
> LOG:  statement: SET extra_float_digits TO 2
> LOG:  statement: SET synchronize_seqscans TO off
> LOG:  statement: BEGIN
> LOG:  statement: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
> LOG:  statement: SET search_path = pg_catalog
> LOG:  statement: SELECT tableoid, oid, nspname, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = nspowner) as rolname, nspacl FROM
> pg_namespace
> LOG:  statement: SELECT tableoid, oid, proname, prolang, pronargs,
> proargtypes, prorettype, proacl, pronamespace,(SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = proowner) as rolname FROM pg_proc WHERE NOT
> proisagg AND pronamespace != (select oid from pg_namespace where nspname =
> 'pg_catalog')
> LOG:  statement: SELECT tableoid, oid, typname, typnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = typowner) as rolname,
> typinput::oid as typinput, typoutput::oid as typoutput, typelem, typrelid,
> CASE WHEN typrelid = 0 THEN ' '::"char" ELSE (SELECT relkind FROM pg_class
> WHERE oid = typrelid) END as typrelkind, typtype, typisdefined, typname[0]
> = '_' AND typelem != 0 AND (SELECT typarray FROM pg_type te WHERE oid =
> pg_type.typelem) = oid AS isarray FROM pg_type
> LOG:  statement: SELECT tableoid, oid, lanname, lanpltrusted,
> lanplcallfoid, lanvalidator,  lanacl, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = lanowner) as lanowner FROM pg_language
> WHERE lanispl ORDER BY oid
> LOG:  statement: SELECT tableoid, oid, proname as aggname, pronamespace as
> aggnamespace, pronargs, proargtypes, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = proowner) as rolname, proacl as aggacl FROM
> pg_proc WHERE proisagg AND pronamespace != (select oid from pg_namespace
> where nspname = 'pg_catalog')
> LOG:  statement: SELECT tableoid, oid, oprname, oprnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = oprowner) as rolname,
> oprcode::oid as oprcode FROM pg_operator
> LOG:  statement: SELECT tableoid, oid, opcname, opcnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = opcowner) as rolname FROM
> pg_opclass
> LOG:  statement: SELECT tableoid, oid, prsname, prsnamespace,
> prsstart::oid, prstoken::oid, prsend::oid, prsheadline::oid,
> prslextype::oid FROM pg_ts_parser
> LOG:  statement: SELECT tableoid, oid, tmplname, tmplnamespace,
> tmplinit::oid, tmpllexize::oid FROM pg_ts_template
> LOG:  statement: SELECT tableoid, oid, dictname, dictnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = dictowner) as rolname,
> dicttemplate, dictinitoption FROM pg_ts_dict
> LOG:  statement: SELECT tableoid, oid, cfgname, cfgnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = cfgowner) as rolname,
> cfgparser FROM pg_ts_config
> LOG:  statement: SELECT tableoid, oid, opfname, opfnamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = opfowner) as rolname FROM
> pg_opfamily
> LOG:  statement: SELECT tableoid, oid, conname, connamespace, (SELECT
> rolname FROM pg_catalog.pg_roles WHERE oid = conowner) as rolname FROM
> pg_conversion
> LOG:  statement: SELECT c.tableoid, c.oid, relname, relacl, relkind,
> relnamespace, (SELECT rolname FROM pg_catalog.pg_roles WHERE oid =
> relowner) as rolname, relchecks, reltriggers, relhasindex, relhasrules,
> relhasoids, d.refobjid as owning_tab, d.refobjsubid as owning_col, (SELECT
> spcname FROM pg_tablespace t WHERE t.oid = c.reltablespace) AS
> reltablespace, array_to_string(c.reloptions, ', ') as reloptions from
> pg_class c left join pg_depend d on (c.relkind = 'S' and d.classid =
> c.tableoid and d.objid = c.oid and d.objsubid = 0 and d.refclassid =
> c.tableoid and d.deptype = 'a') where relkind in ('r', 'S', 'v', 'c') order
> by c.oid
> LOG:  statement: SELECT inhrelid, inhparent from pg_inherits
> LOG:  statement: SELECT tableoid, oid, rulename, ev_class as ruletable,
> ev_type, is_instead, ev_enabled FROM pg_rewrite ORDER BY oid
> LOG:  statement: SELECT tableoid, oid, castsource, casttarget, castfunc,
> castcontext FROM pg_cast ORDER BY 3,4
> LOG:  statement: SELECT loid FROM pg_largeobject LIMIT 1
> LOG:  statement: SELECT classid, objid, refclassid, refobjid, deptype FROM
> pg_depend WHERE deptype != 'p' ORDER BY 1,2
> LOG:  statement: SELECT tableoid, oid, (SELECT rolname FROM
> pg_catalog.pg_roles WHERE oid = datdba) as dba,
> pg_encoding_to_char(encoding) as encoding, (SELECT spcname FROM
> pg_tablespace t WHERE t.oid = dattablespace) as tablespace,
> shobj_description(oid, 'pg_database') as description FROM pg_database WHERE
> datname = 'testdb'
> LOG:  statement: SELECT description, classoid, objoid, objsubid FROM
> pg_catalog.pg_description ORDER BY classoid, objoid, objsubid
> LOG:  statement: SET search_path = public, pg_catalog
> LOG:  statement: SELECT proretset, prosrc, probin, proallargtypes,
> proargmodes, proargnames, provolatile, proisstrict, prosecdef, proconfig,
> procost, prorows, (SELECT lanname FROM pg_catalog.pg_language WHERE oid =
> prolang) as lanname FROM pg_catalog.pg_proc WHERE oid =
> '16386'::pg_catalog.oid
> LOG:  statement: SELECT pg_catalog.format_type('1185'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('1022'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('1184'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('701'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('1185'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('1022'::pg_catalog.oid, NULL)
> LOG:  statement: SELECT pg_catalog.format_type('2249'::pg_catalog.oid, NULL)
> LOG:  could not receive data from client: No connection could be made
> because the target machine actively refused it.

> LOG:  unexpected EOF on client connection

            regards, tom lane

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: objects tied to missing extension
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6307: intarray extention gin index does not work with Hot standby