[ 
https://issues.apache.org/jira/browse/DERBY-5403?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mamta A. Satoor updated DERBY-5403:
-----------------------------------

    Urgency: Normal
     Labels: derby_triage10_10  (was: )
    
> implement further syntax for truncate table support - identityBehavior clause
> -----------------------------------------------------------------------------
>
>                 Key: DERBY-5403
>                 URL: https://issues.apache.org/jira/browse/DERBY-5403
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Myrna van Lunteren
>            Priority: Minor
>              Labels: derby_triage10_10
>
> Since 10.7 basic support for TRUNCATE TABLE has been implemented (see 
> DERBY-268) and documented (see DERBY-4802).
> However, according to the SQL Standard (F200 in SQL:2008) the full syntax 
> includes an identityBehavior clause:
> TRUNCATE TABLE tableName [ identityBehavior ]
> identityBehavior ::=
>    CONTINUE IDENTITY
>    | RESTART IDENTITY 
> This clause has not been fully implemented.
> Reading through DERBY-268 yields more details, e.g.:
> (https://issues.apache.org/jira/browse/DERBY-268?focusedCommentId=12905937&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12905937):
> "A follow-on effort might be to implement the optional CONTINUE IDENTITY and 
> RESTART IDENTITY clauses. Fortunately, the tricky bit of RESTART IDENTITY has 
> already been implemented. The tricky bit is the following implied statement 
> which is executed after truncating the table:
> ALTER TABLE tableName ALTER COLUMN RESTART WITH initialValue "
> and:
> (https://issues.apache.org/jira/browse/DERBY-268?focusedCommentId=12912378&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12912378)
>  "[...]sqlgrammar.jj would be a good starting point"
> and:
> ( 
> https://issues.apache.org/jira/browse/DERBY-268?focusedCommentId=12916134&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12916134):
> [...]all of this code should be in the engine. The good news is that both 
> TRUNCATE TABLE and ALTER TABLE ALTER COLUMN RESTART are handled by the 
> AlterTableConstantAction machinery at run time. If I were tackling this, I 
> would first try something along these lines:
> o AlterTableNode.bindStatement() will need to build a tableElementList 
> structure for TRUNCATE TABLE, describing the identity column which needs to 
> be re-initialized. For ALTER TABLE ALTER COLUMN RESTART, that 
> tableElementList is created by the parser.
> o That tableElementList structure will then be picked up by 
> AlterTableNode.prepConstantAction and turned into a ColumnInfo array when the 
> run time structures are generated for TRUNCATE TABLE. The ColumnInfo[] 
> structure should contain enough information to describe the change to the 
> identity column.
> o The column info structure will then be processed by 
> AlterTableConstantAction.executeConstantAction() at run time.
> You may need to tweak the code a bit to get this to function, but I think 
> this basic processing flow should work.[...]"
> and the comments in DERBY-268 after Oct 10, 2010 all refer to an aborted 
> attempt by Eranda to work on this functionality, including a tentative patch.
> I'll mark this issue beginner because of that preliminary work.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to