From: Andres Freund Date: Tue, 24 Jun 2014 09:31:47 +0000 (+0200) Subject: bdr, deparse: Deparse nondefault seqams correctly when default_seqam is set. X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=refs%2Fheads%2Fbdr-next;p=users%2Fandresfreund%2Fpostgres.git bdr, deparse: Deparse nondefault seqams correctly when default_seqam is set. This could lead to sequences being created as bdr sequences on one node and local sequences on others. --- diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index dc7ea3d224..3cbd49e314 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -89,6 +89,7 @@ Oid DefineSequence(CreateSeqStmt *seq) { FormData_pg_sequence new; + Form_pg_seqam seqamForm; List *owned_by; CreateStmt *stmt = makeNode(CreateStmt); Oid seqoid; @@ -112,8 +113,17 @@ DefineSequence(CreateSeqStmt *seq) /* Check and set all param values */ init_params(seq->options, true, &new, &owned_by); + seqamid = init_options(InvalidOid, seq->accessMethod, seq->amoptions); + /* change statement to reflect the seqam for deparsing */ + tuple = SearchSysCache1(SEQAMOID, ObjectIdGetDatum(seqamid)); + if (!HeapTupleIsValid(tuple)) + elog(ERROR, "cache lookup failed for relation %u", seqamid); + seqamForm = (Form_pg_seqam) GETSTRUCT(tuple); + seq->accessMethod = NameStr(seqamForm->seqamname); + ReleaseSysCache(tuple); + /* * Create relation (and fill value[] and null[] for the tuple) */