Re: clone_schema function - Mailing list pgsql-general

From Melvin Davidson
Subject Re: clone_schema function
Date
Msg-id CANu8FiyNoQSJ385Lj8+c748beSadz200x+GNqbVPB1hxCPmRMw@mail.gmail.com
Whole thread Raw
In response to Re: clone_schema function  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-general
Igor & David,

You are correct, I am subject to criticism, However, I have spent a few days getting this to work as it should and it now does.
Even though the chance of a collision is not zero, it is still low and the function does work.
I don't mind criticism, but when someone finds a problem, the least they can do is suggest a fix, as you have David.

I'll try that and test over the weekend.. Or I also invite you to submit a fixed version.

On Fri, Sep 11, 2015 at 4:39 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Fri, Sep 11, 2015 at 4:23 PM, Melvin Davidson <melvin6925@gmail.com> wrote:
"seriously flawed" is a bit of a stretch. Most sane developers would not have schema names of one letter.
They usually name a schema something practical, which totally avoids your nit picky exception.
However, if you are that concerned about the "serious flaw", you have the option of using the method
of dumping the schema, editing the dump and reloading. Or, I invite you to use your great skills and
write a better method.

     SELECT replace(qry, source_schema, dest_schema) INTO dest_qry;

Or maybe you can at least mitigate the potential problem a bit by changing this to read:

replace(qry, source_schema || '.', dest_schema || '.') INTO dest_qry; ...

Posting code for public consumption involves accepting constructive criticism and even if the example is contrived I'm doubting the possibility of collision is as close to zero as you think it may be or as close as it could be with a simple re-evaluation of what constraints as imposed on a particular sequence of characters being interpreted as a schema.  You do still end up with a possible false-positive when you have a (column.composite).composite_field expression.

Regular expressions could maybe help here since the leading character is limited too...but less so then the trailing character.

David J.





--
Melvin Davidson
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

pgsql-general by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: clone_schema function
Next
From: Charles Lynch
Date:
Subject: BDR problem