[ 
https://issues.apache.org/jira/browse/DERBY-268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12933558#action_12933558
 ] 

Rick Hillegas commented on DERBY-268:
-------------------------------------

Hi Eranda,

I am not sure where you are in the code now, so I may not be answering your 
question. If you can give me more context, I may be more helpful. For TRUNCATE 
TABLE, the AlterTableNode is created by the parser. This is the basic 
processing flow today:

o The parser digests the TRUNCATE TABLE statement and creates an AlterTableNode.

o Then the AlterTableNode is bound. That is, object names are looked up in the 
system catalogs (in this case, the named object in question is the table). As 
necessary, metadata is copied out of the system catalogs into in-memory 
structures in the parse tree.

o Then the AlterTableNode is optimized. Since this is a DDL statement, there is 
nothing to do during this phase.

o An executable plan is then generated from the AlterTableNode. This phase is 
called code-generation. The executable plan is an AlterTableConstantAction.

o At run-time, the AlterTableConstantAction performs the truncation.

Here's what I think the code will end up doing, at a high level:

o At parse time, you will detect the RESTART IDENTITY clause and set some flag 
in the AlterTableNode.

o At bind time, you will see that flag. That will cause you to look up the 
column metadata for the table, find the identity column, then build a 
TableElementNode which represents the instruction to re-initialize the identity 
column.

o At code-generation time, you will turn the TableElementNode into a ColumnInfo 
which represents the same information. The TableElementNode is a compile-time 
structure. The ColumnInfo is a runtime structure. What you are doing here is 
translating compile-time structures into runtime structures.

o At runtime, the AlterTableConstantAction will notice the ColumnInfo structure 
and reinitialize the identity column.

I hope I am not confusing you by answering the wrong question. Keep asking 
questions so that I can better understand what's puzzling you.

Thanks,
-Rick

> Add Support for truncate table
> ------------------------------
>
>                 Key: DERBY-268
>                 URL: https://issues.apache.org/jira/browse/DERBY-268
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>            Reporter: Lance Andersen
>            Assignee: Eranda Sooriyabandara
>            Priority: Minor
>         Attachments: changes.diff, 
> derby-268-01-ab-enableForInsaneBuilds.diff, derby-268-02-aa-permsTest.diff, 
> derby-268-03-aa-npe.diff, Derby-268.diff, tests.diff, 
> TruncateConcurrency.java, TruncateConcurrency.java, TruncateConcurrency.java
>
>
> Adding support for truncate table command will aid to portability

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to