From b266f6f547c2c7a2f3997b3c602b5148b4c53e4a Mon Sep 17 00:00:00 2001 From: Martin Kleusberg Date: Sat, 14 Mar 2015 00:56:08 +0100 Subject: [PATCH] grammar: Also parse foreign key clauses inside column definitions Also parse foreign key clauses used inside column definitions as opposed to just parsing those in the table constraints. See issue #227. --- src/sqlitetypes.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sqlitetypes.cpp b/src/sqlitetypes.cpp index 7317fc47..738251ff 100644 --- a/src/sqlitetypes.cpp +++ b/src/sqlitetypes.cpp @@ -423,6 +423,7 @@ void CreateTableWalker::parsecolumn(FieldPtr& f, antlr::RefAST c) bool unique = false; QString defaultvalue; QString check; + QString foreignKey; colname = columnname(c); c = c->getNextSibling(); //type? @@ -487,6 +488,12 @@ void CreateTableWalker::parsecolumn(FieldPtr& f, antlr::RefAST c) unique = true; } break; + case sqlite3TokenTypes::REFERENCES: + { + con = con->getNextSibling(); // REFERENCES + foreignKey = concatTextAST(con, true); + } + break; default: { m_bModifySupported = false; @@ -498,6 +505,7 @@ void CreateTableWalker::parsecolumn(FieldPtr& f, antlr::RefAST c) f = FieldPtr( new Field(colname, type, notnull, defaultvalue, check, primarykey, unique)); f->setAutoIncrement(autoincrement); + f->setForeignKey(foreignKey); } } //namespace sqlb