Re: [PATCH] Tables node (pgAdmin4)

Поиск
Список
Период
Сортировка
От Thom Brown
Тема Re: [PATCH] Tables node (pgAdmin4)
Дата
Msg-id CAA-aLv4z0RcdDvYLtQFH1JgWH2pdPizW9Fa+XaOSTQYQgZeLzg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [PATCH] Tables node (pgAdmin4)  (Thom Brown <thom@linux.com>)
Ответы Re: [PATCH] Tables node (pgAdmin4)  (Murtuza Zabuawala <murtuza.zabuawala@enterprisedb.com>)
Re: [PATCH] Tables node (pgAdmin4)  (Thom Brown <thom@linux.com>)
Re: [PATCH] Tables node (pgAdmin4)  (Harshal Dhumal <harshal.dhumal@enterprisedb.com>)
Список pgadmin-hackers
On 27 April 2016 at 13:43, Thom Brown <thom@linux.com> wrote:
> On 27 April 2016 at 10:22, Harshal Dhumal
> <harshal.dhumal@enterprisedb.com> wrote:
>>
>> Hi,
>>
>> PFA attached patches for table node and all table child nodes.
>>
>> This patch includes below nodes,
>>
>> 1) Table node                              -- Initial patch by Murtuza, constraints compatibility by Harshal.
>> 2) Column node                           -- by Murtuza.
>> 3) Index node                              -- by Murtuza.
>> 4) Trigger node                            -- by Murtuzz.
>> 6) Rules node                              -- by Surinder.
>> 7) Constraints nodes:
>>       i]  Index Constraint                 -- Initial patch by Harshal, Integration with table node by Murtuza.
>>       ii] Foreign key                        -- Initial patch and Integration with table node by Harshal.
>>       iii] Check constraint                -- Initial patch and Integration with table node by Harshal.
>>       iv] Exclusion constraint           -- Initial patch and Integration with table node by Harshal.
>>
>> Please apply patches in following order as all of them depends on each other.
>>
>> Order:  Table Node ----> Index constraint ---> remaining patches in any order.
>>
>>
>
> Nice work.  Here's some initial feedback from a very quick play around.
>
> On the Create table editor, in the Advance tab (which should probably
> be labelled "Advanced"), the Like section should grey out the "With *"
> values if no relation is selected in the drop-down box.
>
> The way primary keys are defined are kinda awkward.  It might be
> useful to provide some kind of checkbox on the initial column list
> that tells it which columns are involved in the primary key, then the
> user could just select which ones they want.  If they want to refine
> it, they could edit it in the Constraints > Primary Key section.
>
> I'm getting weird spacing in the SQL output.  Here's an example:
>
> CREATE UNLOGGED TABLE public.test
> (
>     id integer COLLATE pg_catalog."de_DE.utf8" NOT NULL DEFAULT -1,
>     stuff text COLLATE pg_catalog."C.UTF-8" DEFAULT "hello",
>     CONSTRAINT pk PRIMARY KEY (id, stuff) WITH (FILLFACTOR=33) DEFERRABLE
> )
> WITH (
>     OIDS = TRUE,
>     FILLFACTOR = 88,
>     autovacuum_enabled = TRUE,
>     autovacuum_analyze_scale_factor = 0.33,
>     autovacuum_analyze_threshold = 30,
>     autovacuum_freeze_max_age = 3333333,
>     autovacuum_vacuum_cost_delay = 30,
>     autovacuum_vacuum_cost_limit = 3,
>     autovacuum_vacuum_scale_factor = 0.33,
>     autovacuum_vacuum_threshold = 33,
>     autovacuum_freeze_min_age = 3300000,
>     autovacuum_freeze_table_age = 333000000
> )
> TABLESPACE pg_default;
>
> ALTER TABLE public.test
>     OWNER to thom;
> GRANT ALL ON TABLE public.test TO thom;
>
>
> COMMENT ON TABLE public.test
>     IS 'This is just a test table';
>
> COMMENT ON COLUMN public.test.id
>     IS 'the main ID';
>
> ALTER TABLE public.test
>     ALTER COLUMN id
>     SET (n_distinct='0.2');
> COMMENT ON CONSTRAINT pk ON public.test
>     IS 'primary key test'
>
> Note there are 2 blank lines after the GRANT ALL ON TABLE line, and
> none before the COMMENT ON CONSTRAINT line.
>
> This SQL fails because collations aren't allowed on integer columns,
> and the DEFAULT value for the column named stuff doesn't quote it as a
> string literal, so it's looking for a column called "hello".
>
> There's also no way to view the autovacuum options I defined other
> than the SQL pane.

A couple more:

If I go to create a new table, give it a name, select a table to
inherit from, and then do nothing else, I get an error:

ERROR: syntax error at or near "INHERITS"
LINE 2: INHERITS (test)
^

This is because no column list was provided, and in this case, an
empty one would be needed.  So instead of:

CREATE TABLE public.test2
(
)
    INHERITS (test)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

It should be:

CREATE TABLE public.test2
    INHERITS (test)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;


If I go to create another new table, give it a name, and then in the
Like section on the Advance tab, I select a table, and enable each of
the With * options, the following SQL is produced:

CREATE TABLE public.test2
    LIKE public.test
        INCLUDING DEFAULTS
        INCLUDING CONSTRAINTS
        INCLUDING INDEXES
        INCLUDING STORAGE
        INCLUDING COMMENTSWITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

The LIKE statement should appear in the column list section, so should
be surrounded in parentheses.  Also, the WITH statement here is not on
a new line.

So this should be:

CREATE TABLE public.test2
(
    LIKE public.test
        INCLUDING DEFAULTS
        INCLUDING CONSTRAINTS
        INCLUDING INDEXES
        INCLUDING STORAGE
        INCLUDING COMMENTS
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

Regards

Thom


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

Предыдущее
От: Thom Brown
Дата:
Сообщение: Re: [PATCH] Tables node (pgAdmin4)
Следующее
От: Neel Patel
Дата:
Сообщение: Re: [pgAdmin4][Patch]: File Manager & Backform FileControl