|From:||Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>|
|To:||Michael Paquier <michael(dot)paquier(at)gmail(dot)com>|
|Cc:||Kyotaro HORIGUCHI <horiguchi(dot)kyotaro(at)lab(dot)ntt(dot)co(dot)jp>, Masao Fujii <masao(dot)fujii(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Thom Brown <thom(at)linux(dot)com>, Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>, Beena Emerson <memissemerson(at)gmail(dot)com>, Josh Berkus <josh(at)agliodbs(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>|
|Subject:||Re: Support for N synchronous standby servers - take 2|
|Views:||Raw Message | Whole Thread | Download mbox|
On Mon, Feb 15, 2016 at 2:54 PM, Michael Paquier
> On Mon, Feb 15, 2016 at 2:11 PM, Kyotaro HORIGUCHI wrote:
>> Surprizingly yes. The list is handled as an identifier list and
>> parsed by SplitIdentifierString thus it can accept double-quoted
Attached latest version patch which has only feature logic so far.
I'm writing document patch about this feature now, so this version
patch doesn't have document and regression test patch.
> | $ postgres
> | FATAL: syntax error: unexpected character "*"
> Mmm.. It should be tough to find what has happened..
I'm trying to implement better error message, but that change is not
included in this version patch yet.
> malloc/free are used in create_name_node and other functions to
> be used in scanner, but syncgroup_gram.y is said to use
> palloc/pfree. Maybe they should use the same memory
> allocation/freeing functions.
Setting like this, I think that we use malloc/free funcion when we
allocate/free memory for SyncRepStandbys variables.
OTOH, we use palloc/pfree function during parsing SyncRepStandbyString.
Am I missing something?
> I suppose SyncRepGetSyncedLsnsFn, or SyncRepGetSyncedLsnsPriority
> can return InvalidXLogRecPtr as cur_*_pos even when it returns
> true. And, I suppose comparison of LSN values with
> InvalidXLogRecPtr is not well-defined. Anyway the condition goes
> wrong when cur_write_pos = InvalidXLogRecPtr (but ret = true).
In this version patch, it's not possible to return InvalidXLogRecPtr
with got_lsns = false (was ret = false).
So we can ensure that we got valid LSNs when got_lsns = true.
> At a glance, SyncRepGetSyncedLsnsPriority and
> SyncRepGetSyncStandbysPriority does almost the same thing and both
> runs loops over group members. Couldn't they run at once?
Yeah, I've optimized that logic.
> We may want to be careful with the use of '[' in application_name.
> I am not much thrilled with forbidding the use of () in application_name, so we may
> want to recommend user to use a backslash when using s_s_names when a
> group is defined.
> s_s_names='abc, def, " abc,""def"'
> Result list is ["abc", "def", " abc,\"def"]
> Simplly supporting the same notation addresses the problem and
> accepts strings like the following.
> s_s_names='2["comma,name", "foo[bar,baz]"]'
I've changed s_s_names parser so that it can handle special 4
characters (\,\ \[\]) and can handle double-quoted string accurately
same as what SplitIdentifierString does.
We can not use special 4 characters (\,\ \[ \]) without using
double-quoted string. Also if we use "(double-quote) character in
double-quoted string, we should use ""(double double-quotes).
if application_name = 'hoge " bar', s_s_name = '"hoge "" bar"' would be matched.
Other given comments are fixed.
Remaining tasks are;
- Document patch.
- Regression test patch.
- Syntax error message for s_s_names improvement.
|Next Message||Michael Paquier||2016-02-16 07:20:51||Re: exposing pg_controldata and pg_config as functions|
|Previous Message||Ashutosh Bapat||2016-02-16 07:02:27||Re: postgres_fdw join pushdown (was Re: Custom/Foreign-Join-APIs)|