Hi

On Thu, May 4, 2017 at 4:00 PM, Dave Page <dp...@pgadmin.org> wrote:

> Hi
>
> On Thu, May 4, 2017 at 10:29 AM, Akshay Joshi <
> akshay.jo...@enterprisedb.com> wrote:
>
>> Hi All
>>
>> On Wed, May 3, 2017 at 5:35 PM, Dave Page <dp...@pgadmin.org> wrote:
>>
>>> Great, thanks.
>>>
>>> I think it's clear that we need to display the child partitions in the
>>> treeview. I don't see any other sensible way of enabling those operations
>>> without an extremely contrived dialogue design.
>>>
>>> Please now document how those features will be implemented; e.g, for
>>> each one:
>>>
>>> - View table data: Parent and partition context menu.
>>> - Attach/detach partitions: Parent properties dialogue
>>> ...
>>>
>>> That will then give us a list of places we'll need to (re)design
>>> dialogues and menus etc. for.
>>>
>>
>>     As per my knowledge on Partitioning, I think we will have to
>> implement following things in parent and child:
>>
>>    Parent:
>>
>>    1. View Table data :  No need to change any logic, it's working.
>>    2. Correct jinja template to show correct SQL in SQL pane.
>>    3. Create partitioned table -
>>       - Add one switch control ("Partitioned Table?") in General tab of
>>       Table dialog.
>>       - Add new tab "Partitions".
>>       - Add one select2 control (Partition Type :Range/List) in
>>       "Partitions" tab.
>>       - Create one subnode control to specify number of key columns with
>>       expressions. For List partition only one row will be there + button 
>> will be
>>       disabled, and for Range partition + button will be enabled. Here is the
>>       syntax as per documentation [ PARTITION BY { RANGE | LIST } ( {
>>       *column_name* | ( *expression* ) } [ COLLATE *collation* ] [
>>       *opclass* ] [, ... ] ) ]. *Design discussion required here for how
>>       user will specify expression, collate and opclass*.
>>    4. Create N number of partitions:
>>       - Design one control (subnode control) so that user will add N
>>       number of partitions. Here is the syntax as per documentation CREATE
>>        TABLE  *table_name PARTITION OF parent_table [ (   { column_name
>>       [ WITH OPTIONS ] [ column_constraint [ ... ] ]     | table_constraint }
>>       [, ... ] ) ] FOR VALUES partition_bound_spec *
>>       *partition_bound_spec* is:
>>
>>       { IN ( { *bound_literal* | NULL } [, ...] ) |
>>         FROM ( { *bound_literal* | UNBOUNDED } [, ...] ) TO ( { 
>> *bound_literal* | UNBOUNDED } [, ...] ) }
>>
>>       - *Design discussion required here for how user will specify all
>>       the above combinations.*
>>    5. Properties dialog "Partitions" Tab:
>>       - Partition Type control must be disabled.
>>       - User will be able to create/modify existing partitions. User
>>       won't be able to delete partitions as there are two modes Detach/Drop 
>> and
>>       we will have separate menu for it.
>>    6. Drop/ Drop cascade, Truncate: No need to change any logic, it's
>>    working.
>>    7. Attach Partitions:  Create context menu on partitioned table. When
>>    user clicks, open one dialog with some controls to provide table(to
>>    be attach) and partition_bound_spec*. Design discussion required
>>    here.*
>>    8. Not able to create constraints excluding check constraint:  We
>>    will have to disable context menu, remove child nodes from browser tree 
>> for
>>    constraints and disable controls from the dialog.
>>
>>     Child:
>>
>>    1. View Table Data: Add context menu.
>>    2. Detach partition: Create context menu, when user click popped up
>>    confirmation message box.
>>    3. View partition scheme in SQL pane: Changes required in jinja
>>    template.
>>    4. Create primary/foreign/.. key constraint: No need to change any
>>    logic on GUI, but may need to change queries to fetch the partitioned
>>    tables.
>>    5. Drop/ Drop cascade, Truncate: No need to change any logic.
>>
>>     Apart from above it may be possible that I miss something, so we need
>> to cover that too.
>>
>
> OK, good. So now, let's break that down into a list of tasks, that we can
> prioritise with Shirley. The initial list should be prioritised based on
> your understanding I think, given the following criteria:
>
> - Changes that prevent pgAdmin breaking
> - Changes that prevent pgAdmin showing incorrect data/info
> - Changes that enable pgAdmin to show correct info
> - Changes that add functionality for creating/dropping partitioned tables
> as one unit
> - Changes that add functionality for modifying individual partitions
> independently
>
> Please document the requirements and initial plan on the pgAdmin Redmine
> Wiki.
>

     I have updated Redmine Wiki page regarding what needs to be
implemented for partitioning. Can we discuss prioritisation of the task
based on above criteria in the our meeting. Meanwhile I have started
working on showing correct SQL for partitioned table.

>
> Thanks!
>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>



-- 
*Akshay Joshi*
*Principal Software Engineer *



*Phone: +91 20-3058-9517Mobile: +91 976-788-8246*

Reply via email to