mirror of
https://github.com/rbock/sqlpp11.git
synced 2024-11-15 20:31:16 +08:00
ddl2cpp: support CHECK constraint
This commit is contained in:
parent
d2dc3124fb
commit
18e1c180fe
@ -178,7 +178,16 @@ negativeSign = Literal('-')
|
||||
ddlNum = Combine(Optional(negativeSign) + Word(nums + "."))
|
||||
ddlTerm = Word(alphanums + "_$")
|
||||
ddlName = Or([ddlTerm, ddlString])
|
||||
ddlMathOp = Word("+><=-")
|
||||
ddlBoolean = Or([ddlWord("AND"), ddlWord("OR"), ddlWord("NOT")])
|
||||
ddlArguments = "(" + delimitedList(Or([ddlString, ddlTerm, ddlNum])) + ")"
|
||||
ddlMathCond = "(" + delimitedList(
|
||||
Or([
|
||||
Group(ddlName + ddlMathOp + ddlName),
|
||||
Group(ddlName + ddlWord("NOT") + ddlWord("NULL")),
|
||||
]),
|
||||
delim=ddlBoolean) + ")"
|
||||
|
||||
ddlUnsigned = ddlWord("unsigned").setResultsName("isUnsigned")
|
||||
ddlNotNull = Group(ddlWord("NOT") + ddlWord("NULL")).setResultsName("notNull")
|
||||
ddlDefaultValue = ddlWord("DEFAULT").setResultsName("hasDefaultValue")
|
||||
@ -196,8 +205,9 @@ ddlConstraint = Or([
|
||||
ddlWord("KEY"),
|
||||
ddlWord("INDEX"),
|
||||
ddlWord("UNIQUE"),
|
||||
ddlWord("CHECK")
|
||||
])
|
||||
ddlColumn = Group(Optional(ddlConstraint).setResultsName("isConstraint") + OneOrMore(MatchFirst([ddlUnsigned, ddlNotNull, ddlAutoValue, ddlDefaultValue, ddlFunctionWord("NOW"), ddlTerm, ddlNum, ddlColumnComment, ddlString, ddlArguments])))
|
||||
ddlColumn = Group(Optional(ddlConstraint).setResultsName("isConstraint") + OneOrMore(MatchFirst([ddlUnsigned, ddlNotNull, ddlAutoValue, ddlDefaultValue, ddlFunctionWord("NOW"), ddlTerm, ddlNum, ddlColumnComment, ddlString, ddlArguments, ddlMathCond])))
|
||||
ddlIfNotExists = Optional(Group(ddlWord("IF") + ddlWord("NOT") + ddlWord("EXISTS")).setResultsName("ifNotExists"))
|
||||
createTable = Group(ddlWord("CREATE") + ddlWord("TABLE") + ddlIfNotExists + ddlName.setResultsName("tableName") + "(" + Group(delimitedList(ddlColumn)).setResultsName("columns") + ")").setResultsName("create")
|
||||
#ddlString.setDebug(True) #uncomment to debug pyparsing
|
||||
|
Loading…
Reference in New Issue
Block a user