On Fri, Nov 04, 2022 at 07:19:27AM -0500, Justin Pryzby wrote:
> On Fri, Nov 04, 2022 at 07:59:01PM +0800, Julien Rouhaud wrote:
> > On Thu, Nov 03, 2022 at 10:22:15PM +0100, Pavel Stehule wrote:
> > > čt 3. 11. 2022 v 5:09 odesílatel Julien Rouhaud <rjuju123@gmail.com> napsal:
> > > updated patch attached
> > >
> > > big thanks for these comments and tips
> >
> > Thanks for the updated patch! As far as I'm concerned the patch is in a good
> > shape, passes the CI and I don't have anything more to say so I'm marking it as
> > Ready for Committer!
>
> +1
>
> I started looking to see if it's possible to simplify the patch at all,
> but nothing to show yet.
>
> But one thing I noticed is that "optarg" looks wrong here:
>
> simple_string_list_append(&opts->triggerNames, optarg);
Ah indeed, good catch! Maybe there should be an explicit test for every
(include|exclude) / objtype combination? It would be a bit verbose (and
possibly hard to maintain).
yes - pg_restore is not well covered by tests, fixed
I found another issue. The pg_restore requires a full signature of the function and it is pretty sensitive on white spaces (pg_restore). I made a mistake when I partially parsed patterns like SQL identifiers. It can work for simple cases, but when I parse the function's signature it stops working. So I rewrote the parsing pattern part. Now, I just read an input string and I try to reduce spaces. Still multiline identifiers are supported. Against the previous method of pattern parsing, I needed to change just one regress test - now I am not able to detect garbage after pattern :-/. It is possible to enter types like "double precision" or "timestamp with time zone", without needing to check it on the server side.
When I wroted regress tests I found some issues of pg_restore filtering options (not related to this patch)
* function's filtering doesn't support schema - when the name of function is specified with schema, then the function is not found
* the function has to be specified with an argument type list - the separator has to be exactly ", " string. Without space or with one space more, the filtering doesn't work (new implementation of pattern parsing reduces white spaces sensitivity). This is not a bug, but it is not well documented.
* the trigger filtering is probably broken (on pg_restore side). The name should be entered in form "tablename triggername"
attached updated patch