org.modeshape.sequencer.ddl.dialect.postgres
Class PostgresDdlParser

java.lang.Object
  extended by org.modeshape.sequencer.ddl.StandardDdlParser
      extended by org.modeshape.sequencer.ddl.dialect.postgres.PostgresDdlParser
All Implemented Interfaces:
DdlConstants, DdlConstants.StatementStartPhrases, DdlParser, PostgresDdlConstants, PostgresDdlConstants.PostgresStatementStartPhrases

public class PostgresDdlParser
extends StandardDdlParser
implements PostgresDdlConstants, PostgresDdlConstants.PostgresStatementStartPhrases

Postgres-specific DDL Parser. Includes custom data types as well as custom DDL statements.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.modeshape.sequencer.ddl.dialect.postgres.PostgresDdlConstants
PostgresDdlConstants.PostgresDataTypes, PostgresDdlConstants.PostgresStatementStartPhrases
 
Nested classes/interfaces inherited from interface org.modeshape.sequencer.ddl.DdlConstants
DdlConstants.AstNodeNames, DdlConstants.DataTypes, DdlConstants.DropBehavior, DdlConstants.MatchType, DdlConstants.Problems, DdlConstants.ReferencialAction, DdlConstants.StatementStartPhrases
 
Field Summary
 
Fields inherited from interface org.modeshape.sequencer.ddl.dialect.postgres.PostgresDdlConstants
CUSTOM_KEYWORDS
 
Fields inherited from interface org.modeshape.sequencer.ddl.DdlConstants
ALTER, CHECK, COLUMN, COMMA, CONSTRAINT, CONSTRAINT_C, CONSTRAINT_FK, CONSTRAINT_PK, CONSTRAINT_UC, CREATE, DECLARE, DEFAULT_ID_CURRENT_USER, DEFAULT_ID_DATETIME, DEFAULT_ID_LITERAL, DEFAULT_ID_NULL, DEFAULT_ID_SESSION_USER, DEFAULT_ID_SYSTEM_USER, DEFAULT_ID_UNDEFINED, DEFAULT_ID_USER, DEFAULT_TERMINATOR, DELETE, DROP, FOREIGN, FOREIGN_KEY, GRANT, INDEX, INSERT, KEY, L_PAREN, L_SQUOTE, MISSING_TERMINATOR_NODE_LITERAL, OFF, ON, PERIOD, PRIMARY, PRIMARY_KEY, R_PAREN, REVOKE, SCHEMA, SELECT, SEMICOLON, SET, SPACE, SQL_92_RESERVED_WORDS, TABLE, UNIQUE, UPDATE, VIEW
 
Fields inherited from interface org.modeshape.sequencer.ddl.dialect.postgres.PostgresDdlConstants.PostgresStatementStartPhrases
ALTER_PHRASES, COMPLEX_STMT_TYPES, CREATE_PHRASES, DROP_PHRASES, MISC_PHRASES, SET_PHRASES, STMT_ABORT, STMT_ALTER_AGGREGATE, STMT_ALTER_CONVERSION, STMT_ALTER_DATABASE, STMT_ALTER_FOREIGN_DATA_WRAPPER, STMT_ALTER_FUNCTION, STMT_ALTER_GROUP, STMT_ALTER_INDEX, STMT_ALTER_LANGUAGE, STMT_ALTER_OPERATOR, STMT_ALTER_OPERATOR_CLASS, STMT_ALTER_OPERATOR_FAMILY, STMT_ALTER_PROCEDURAL_LANGUAGE, STMT_ALTER_ROLE, STMT_ALTER_SCHEMA, STMT_ALTER_SEQUENCE, STMT_ALTER_SERVER, STMT_ALTER_TABLESPACE, STMT_ALTER_TEXT_SEARCH, STMT_ALTER_TEXT_SEARCH_CONFIGURATION, STMT_ALTER_TEXT_SEARCH_DICTIONARY, STMT_ALTER_TEXT_SEARCH_PARSER, STMT_ALTER_TEXT_SEARCH_TEMPLATE, STMT_ALTER_TRIGGER, STMT_ALTER_TYPE, STMT_ALTER_USER, STMT_ALTER_USER_MAPPING, STMT_ALTER_VIEW, STMT_ANALYZE, STMT_CLUSTER, STMT_COMMENT_ON, STMT_COMMIT, STMT_COPY, STMT_CREATE_AGGREGATE, STMT_CREATE_CAST, STMT_CREATE_CONSTRAINT_TRIGGER, STMT_CREATE_CONVERSION, STMT_CREATE_DATABASE, STMT_CREATE_FOREIGN_DATA_WRAPPER, STMT_CREATE_FUNCTION, STMT_CREATE_GLOBAL_TEMP_TABLE, STMT_CREATE_GROUP, STMT_CREATE_INDEX, STMT_CREATE_LANGUAGE, STMT_CREATE_LOCAL_TEMP_TABLE, STMT_CREATE_OPERATOR, STMT_CREATE_OPERATOR_CLASS, STMT_CREATE_OPERATOR_FAMILY, STMT_CREATE_OR_REPLACE_FUNCTION, STMT_CREATE_OR_REPLACE_RULE, STMT_CREATE_PROCEDURAL_LANGUAGE, STMT_CREATE_ROLE, STMT_CREATE_RULE, STMT_CREATE_SEQUENCE, STMT_CREATE_SERVER, STMT_CREATE_TABLESPACE, STMT_CREATE_TEMP_SEQUENCE, STMT_CREATE_TEMP_TABLE, STMT_CREATE_TEMPORARY_SEQUENCE, STMT_CREATE_TEXT_SEARCH, STMT_CREATE_TEXT_SEARCH_CONFIGURATION, STMT_CREATE_TEXT_SEARCH_DICTIONARY, STMT_CREATE_TEXT_SEARCH_PARSER, STMT_CREATE_TEXT_SEARCH_TEMPLATE, STMT_CREATE_TRIGGER, STMT_CREATE_TRUSTED_PROCEDURAL_LANGUAGE, STMT_CREATE_TYPE, STMT_CREATE_UNIQUE_INDEX, STMT_CREATE_USER, STMT_CREATE_USER_MAPPING, STMT_DEALLOCATE, STMT_DEALLOCATE_PREPARE, STMT_DECLARE, STMT_DISCARD, STMT_DROP_AGGREGATE, STMT_DROP_CAST, STMT_DROP_CONSTRAINT_TRIGGER, STMT_DROP_CONVERSION, STMT_DROP_DATABASE, STMT_DROP_FOREIGN_DATA_WRAPPER, STMT_DROP_FUNCTION, STMT_DROP_GROUP, STMT_DROP_INDEX, STMT_DROP_LANGUAGE, STMT_DROP_OPERATOR, STMT_DROP_OPERATOR_CLASS, STMT_DROP_OPERATOR_FAMILY, STMT_DROP_OWNED_BY, STMT_DROP_PROCEDURAL_LANGUAGE, STMT_DROP_ROLE, STMT_DROP_RULE, STMT_DROP_SEQUENCE, STMT_DROP_SERVER, STMT_DROP_TABLESPACE, STMT_DROP_TEXT_SEARCH, STMT_DROP_TEXT_SEARCH_CONFIGURATION, STMT_DROP_TEXT_SEARCH_DICTIONARY, STMT_DROP_TEXT_SEARCH_PARSER, STMT_DROP_TEXT_SEARCH_TEMPLATE, STMT_DROP_TRIGGER, STMT_DROP_TYPE, STMT_DROP_USER, STMT_DROP_USER_MAPPING, STMT_EXPLAIN, STMT_EXPLAIN_ANALYZE, STMT_FETCH, STMT_LISTEN, STMT_LOAD, STMT_LOCK_TABLE, STMT_MOVE, STMT_NOTIFY, STMT_PREPARE, STMT_PREPARE_TRANSATION, STMT_REASSIGN_OWNED, STMT_REINDEX, STMT_RELEASE_SAVEPOINT, STMT_REVOKE, STMT_ROLLBACK, STMT_ROLLBACK_PREPARED, STMT_ROLLBACK_TO_SAVEPOINT, STMT_SELECT_INTO, STMT_SET_CONSTRAINTS, STMT_SET_ROLE, STMT_SET_SESSION_AUTHORIZATION, STMT_SET_TRANSACTION, STMT_SHOW, STMT_TRUNCATE, STMT_UNLISTEN, STMT_VACUUM, VALID_SCHEMA_CHILD_STMTS
 
Fields inherited from interface org.modeshape.sequencer.ddl.DdlConstants.StatementStartPhrases
SQL_92_ALL_PHRASES, STMT_ALTER_DOMAIN, STMT_ALTER_TABLE, STMT_CREATE_ASSERTION, STMT_CREATE_CHARACTER_SET, STMT_CREATE_COLLATION, STMT_CREATE_DOMAIN, STMT_CREATE_GLOBAL_TEMPORARY_TABLE, STMT_CREATE_LOCAL_TEMPORARY_TABLE, STMT_CREATE_OR_REPLACE_VIEW, STMT_CREATE_SCHEMA, STMT_CREATE_TABLE, STMT_CREATE_TRANSLATION, STMT_CREATE_VIEW, STMT_DROP_ASSERTION, STMT_DROP_CHARACTER_SET, STMT_DROP_COLLATION, STMT_DROP_DOMAIN, STMT_DROP_SCHEMA, STMT_DROP_TABLE, STMT_DROP_TRANSLATION, STMT_DROP_VIEW, STMT_GRANT, STMT_INSERT_INTO, STMT_REVOKE, STMT_SET_DEFINE, VALID_SCHEMA_CHILD_TYPES
 
Constructor Summary
PostgresDdlParser()
           
 
Method Summary
protected  boolean areNextTokensCreateTableOptions(DdlTokenStream tokens)
           
protected  List<String> getCustomDataTypeStartWords()
          Returns a list of custom data type start words which can be used to help identify a column definition sub-statement.
 String getId()
          Get the identifier for this parser.
protected  Name[] getValidSchemaChildTypes()
          
protected  void initializeTokenStream(DdlTokenStream tokens)
          Method called by StandardDdlParser.score(String, String, DdlParserScorer) and StandardDdlParser.parse(String, AstNode, Object) to initialize the token stream, giving subclasses a chance to register key words and statement start phrases.
protected  AstNode parseAlterStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL ALTER statement based on SQL 92 specifications.
protected  AstNode parseAlterTableStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL ALTER TABLE AstNode based on SQL 92 specifications.
protected  void parseColumns(DdlTokenStream tokens, AstNode tableNode, boolean isAlterTable)
          Utility method designed to parse columns within an ALTER TABLE ADD statement.
protected  AstNode parseCreateSchemaStatement(DdlTokenStream tokens, AstNode parentNode)
          Currently, only CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT are accepted as clauses within CREATE SCHEMA.
protected  AstNode parseCreateStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL CREATE statement based on SQL 92 specifications.
protected  AstNode parseCreateTableStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL CREATE TABLE AstNode based on SQL 92 specifications.
protected  AstNode parseCreateViewStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL CREATE VIEW AstNode basedregisterStatementStartPhrase on SQL 92 specifications.
protected  AstNode parseCustomStatement(DdlTokenStream tokens, AstNode parentNode)
          Catch-all method to parse unknown (not registered or handled by sub-classes) statements.
protected  boolean parseDefaultClause(DdlTokenStream tokens, AstNode columnNode)
          Parses the default clause for a column and sets appropriate properties on the column node.
protected  AstNode parseDropStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL DROP AstNode based on SQL 92 specifications.
protected  void parseGrantPrivileges(DdlTokenStream tokens, List<AstNode> privileges)
          
protected  AstNode parseGrantStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL GRANT statement AstNode based on SQL 92 specifications.
protected  void parseNextCreateTableOption(DdlTokenStream tokens, AstNode parentNode)
           
protected  AstNode parseSetStatement(DdlTokenStream tokens, AstNode parentNode)
          Parses DDL SET AstNode based on SQL 92 specifications.
protected  void rewrite(DdlTokenStream tokens, AstNode rootNode)
           
 
Methods inherited from class org.modeshape.sequencer.ddl.StandardDdlParser
addProblem, addProblem, attachNewProblem, computeScore, consumeComment, consumeIdentifier, consumeParenBoundedTokens, doUseTerminator, equals, getCurrentMarkedPosition, getDatatypeParser, getDataTypeStartWords, getIdentifyingKeywords, getProblems, getRootNode, getStatementTypeName, getTableElementsString, getTerminator, handleUnknownToken, hashCode, integer, isColumnDefinitionStart, isComment, isMissingTerminatorNode, isTableConstraint, isTerminator, isTestMode, isValidSchemaChild, markEndOfStatement, markStartOfStatement, mergeNodes, missingTerminatorNode, nodeFactory, parse, parseCollateClause, parseColumnConstraint, parseColumnDefinition, parseColumnNameList, parseColumnNameList, parseColumnsAndConstraints, parseConstraintAttributes, parseCreateAssertionStatement, parseCreateCharacterSetStatement, parseCreateCollationStatement, parseCreateDomainStatement, parseCreateTableOptions, parseCreateTranslationStatement, parseIgnorableStatement, parseIgnorableStatement, parseInsertStatement, parseName, parseNextStatement, parseReferences, parseRevokeStatement, parseSingleTerminatedColumnDefinition, parseStatement, parseTableConstraint, parseUntilCommaOrTerminator, parseUntilSemiColon, parseUntilTerminator, parseUntilTerminatorIgnoreEmbeddedStatements, removeMissingTerminatorNodes, score, setAsSchemaChildNode, setDatatypeParser, setDoUseTerminator, setRootNode, setTerminator, setTestMode, testPrint, unknownTerminatedNode
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PostgresDdlParser

public PostgresDdlParser()
Method Detail

getId

public String getId()
Get the identifier for this parser.

Specified by:
getId in interface DdlParser
Overrides:
getId in class StandardDdlParser
Returns:
the parser's identifier; never null
See Also:
StandardDdlParser.getId()

initializeTokenStream

protected void initializeTokenStream(DdlTokenStream tokens)
Method called by StandardDdlParser.score(String, String, DdlParserScorer) and StandardDdlParser.parse(String, AstNode, Object) to initialize the token stream, giving subclasses a chance to register key words and statement start phrases.

Overrides:
initializeTokenStream in class StandardDdlParser
Parameters:
tokens - the stream of tokens
See Also:
StandardDdlParser.initializeTokenStream(org.modeshape.sequencer.ddl.DdlTokenStream)

rewrite

protected void rewrite(DdlTokenStream tokens,
                       AstNode rootNode)
Overrides:
rewrite in class StandardDdlParser

parseAlterStatement

protected AstNode parseAlterStatement(DdlTokenStream tokens,
                                      AstNode parentNode)
                               throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL ALTER statement based on SQL 92 specifications.

Overrides:
parseAlterStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed ALTER AstNode
Throws:
ParsingException

parseAlterTableStatement

protected AstNode parseAlterTableStatement(DdlTokenStream tokens,
                                           AstNode parentNode)
                                    throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL ALTER TABLE AstNode based on SQL 92 specifications.

Overrides:
parseAlterTableStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed ALTER TABLE AstNode
Throws:
ParsingException

parseCreateSchemaStatement

protected AstNode parseCreateSchemaStatement(DdlTokenStream tokens,
                                             AstNode parentNode)
                                      throws ParsingException
Currently, only CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER and GRANT are accepted as clauses within CREATE SCHEMA. Parses DDL CREATE SCHEMA AstNode based on SQL 92 specifications. Initial implementation here does not parse the statement in detail.

Overrides:
parseCreateSchemaStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed schema node
Throws:
ParsingException
See Also:
StandardDdlParser.parseCreateSchemaStatement(org.modeshape.sequencer.ddl.DdlTokenStream, org.modeshape.sequencer.ddl.node.AstNode)

parseCreateStatement

protected AstNode parseCreateStatement(DdlTokenStream tokens,
                                       AstNode parentNode)
                                throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL CREATE statement based on SQL 92 specifications.

Overrides:
parseCreateStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed CREATE AstNode
Throws:
ParsingException

parseCreateTableStatement

protected AstNode parseCreateTableStatement(DdlTokenStream tokens,
                                            AstNode parentNode)
                                     throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL CREATE TABLE AstNode based on SQL 92 specifications.

Overrides:
parseCreateTableStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed CREATE TABLE AstNode
Throws:
ParsingException

parseNextCreateTableOption

protected void parseNextCreateTableOption(DdlTokenStream tokens,
                                          AstNode parentNode)
                                   throws ParsingException
Overrides:
parseNextCreateTableOption in class StandardDdlParser
Throws:
ParsingException

areNextTokensCreateTableOptions

protected boolean areNextTokensCreateTableOptions(DdlTokenStream tokens)
                                           throws ParsingException
Overrides:
areNextTokensCreateTableOptions in class StandardDdlParser
Throws:
ParsingException

parseCreateViewStatement

protected AstNode parseCreateViewStatement(DdlTokenStream tokens,
                                           AstNode parentNode)
                                    throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL CREATE VIEW AstNode basedregisterStatementStartPhrase on SQL 92 specifications. Initial implementation here does not parse the statement in detail.

Overrides:
parseCreateViewStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the Create View node
Throws:
ParsingException

parseDefaultClause

protected boolean parseDefaultClause(DdlTokenStream tokens,
                                     AstNode columnNode)
Description copied from class: StandardDdlParser
Parses the default clause for a column and sets appropriate properties on the column node.

Overrides:
parseDefaultClause in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
columnNode - the column node which may contain a default clause; may not be null
Returns:
true if default clause was found and parsed, otherwise false

parseCustomStatement

protected AstNode parseCustomStatement(DdlTokenStream tokens,
                                       AstNode parentNode)
                                throws ParsingException
Description copied from class: StandardDdlParser
Catch-all method to parse unknown (not registered or handled by sub-classes) statements.

Overrides:
parseCustomStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the AstNode
Throws:
ParsingException

parseDropStatement

protected AstNode parseDropStatement(DdlTokenStream tokens,
                                     AstNode parentNode)
                              throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL DROP AstNode based on SQL 92 specifications.

Overrides:
parseDropStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the parsed DROP AstNode
Throws:
ParsingException

parseGrantStatement

protected AstNode parseGrantStatement(DdlTokenStream tokens,
                                      AstNode parentNode)
                               throws ParsingException
Parses DDL GRANT statement AstNode based on SQL 92 specifications.

Overrides:
parseGrantStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the AstNode
Throws:
ParsingException
See Also:
StandardDdlParser.parseGrantStatement(org.modeshape.sequencer.ddl.DdlTokenStream, org.modeshape.sequencer.ddl.node.AstNode)

parseGrantPrivileges

protected void parseGrantPrivileges(DdlTokenStream tokens,
                                    List<AstNode> privileges)
                             throws ParsingException

Overrides:
parseGrantPrivileges in class StandardDdlParser
Throws:
ParsingException
See Also:
StandardDdlParser.parseGrantPrivileges(org.modeshape.sequencer.ddl.DdlTokenStream, java.util.List)

parseSetStatement

protected AstNode parseSetStatement(DdlTokenStream tokens,
                                    AstNode parentNode)
                             throws ParsingException
Description copied from class: StandardDdlParser
Parses DDL SET AstNode based on SQL 92 specifications.

Overrides:
parseSetStatement in class StandardDdlParser
Parameters:
tokens - the DdlTokenStream representing the tokenized DDL content; may not be null
parentNode - the parent AstNode node; may not be null
Returns:
the AstNode
Throws:
ParsingException

parseColumns

protected void parseColumns(DdlTokenStream tokens,
                            AstNode tableNode,
                            boolean isAlterTable)
                     throws ParsingException
Utility method designed to parse columns within an ALTER TABLE ADD statement.

Parameters:
tokens - the tokenized DdlTokenStream of the DDL input content; may not be null
tableNode - the parent AstNode node; may not be null
isAlterTable -
Throws:
ParsingException

getValidSchemaChildTypes

protected Name[] getValidSchemaChildTypes()

Overrides:
getValidSchemaChildTypes in class StandardDdlParser
See Also:
StandardDdlParser.getValidSchemaChildTypes()

getCustomDataTypeStartWords

protected List<String> getCustomDataTypeStartWords()
Returns a list of custom data type start words which can be used to help identify a column definition sub-statement. Sub-classes should override this method to contribute DB-specific data types.

Overrides:
getCustomDataTypeStartWords in class StandardDdlParser
Returns:
list of data type start words
See Also:
StandardDdlParser.getDataTypeStartWords()


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