# Package org.modeshape.sequencer.ddl

The classes that make up the DDL sequencer, which is capable of parsing the more important DDL statements from SQL-92, Oracle, Derby, and PostgreSQL, and constructing a graph structure containing a structured representation of these statements.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  DdlConstants |
  DdlConstants.AstNodeNames |
  DdlConstants.DataTypes | Constants related to Data Types
  DdlConstants.DropBehavior |
  DdlConstants.MatchType |
  DdlConstants.Problems |
  DdlConstants.ReferencialAction |
  DdlConstants.StatementStartPhrases |
  DdlParser | Interface for parsing DDL files.

- Class Summary
  Class | Description
  --- | ---
  DdlParsers | A set of parsers capable of understanding DDL file content.
  DdlParserScorer | Interface used by a parser to determine a score describing how well it handles the DDL content.
  DdlSequencer | A sequencer of DDL files.
  DdlSequencerI18n | The internationalized string constants for the `org.modeshape.sequencer.ddl*` packages.
  DdlTokenStream | A TokenStream implementation designed around requirements for tokenizing and parsing DDL statements.
  DdlTokenStream.DdlTokenizer |
  StandardDdlLexicon | Lexicon for DDL concepts.
  StandardDdlLexicon.Namespace |
  StandardDdlParser | Standard SQL 92 DDL file content parser.

- Exception Summary
  Exception | Description
  --- | ---
  DdlParserProblem | A special form of `DdlConstants.Problems` that is also a `ParsingException`.

## Package org.modeshape.sequencer.ddl Description

The classes that make up the DDL sequencer, which is capable of parsing the more important DDL statements from SQL-92, Oracle, Derby, and PostgreSQL, and constructing a graph structure containing a structured representation of these statements. The resulting graph structure is largely the same for all dialects, though some dialects have non-standard additions to their grammar, and thus require dialect-specific additions to the graph structure.

The sequencer is designed to behave as intelligently as possible with as little configuration. Thus, the sequencer automatically determines the dialect used by a given DDL stream. This can be tricky, of course, since most dialects are very similar and the distinguishing features of a dialect may only be apparent in some of the statements.

To get around this, the sequencer uses a "best fit" algorithm: run the DDL stream through the parser for each of the dialects, and determine which parser was able to successfully read the greatest number of statements and tokens.

One very interesting capability of this sequencer is that, although only a subset of the (more common) DDL statements are supported, the sequencer is still extremely functional since it does still add all statements into the output graph, just without much detail other than just the statement text and the position in the DDL file. Thus, if a DDL file contains statements the sequencer understands and statements the sequencer does not understand, the graph will still contain all statements, where those statements understood by the sequencer will have full detail. Since the underlying parsers are able to operate upon a single statement, it is possible to go back later (after the parsers have been enhanced to support additional DDL statements) and re-parse only those incomplete statements in the graph.

At this time, the sequencer supports SQL-92 standard DDL as well as dialects from Oracle, Derby, and PostgreSQL. It supports:

- Detailed parsing of CREATE SCHEMA, CREATE TABLE and ALTER TABLE.
- Partial parsing of DROP statements
- General parsing of remaining schema definition statements (i.e. CREATE VIEW, CREATE DOMAIN, etc.

Note that the sequencer does not perform detailed parsing of SQL (i.e. SELECT, INSERT, UPDATE, etc....) statements.

Copyright © 2008-2014 JBoss, a division of Red Hat. All Rights Reserved.