001package gudusoft.gsqlparser.stmt.sqlite; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.TVisitorAbs; 007import gudusoft.gsqlparser.nodes.*; 008 009/** 010 * SQLite CREATE VIRTUAL TABLE statement. 011 * 012 * <p>Syntax:</p> 013 * <pre> 014 * CREATE VIRTUAL TABLE [IF NOT EXISTS] [schema.]table_name 015 * USING module_name [(module_arguments)] 016 * </pre> 017 * 018 * <p>Module arguments are opaque text, not parsed as SQL.</p> 019 */ 020public class TSqliteCreateVirtualTableStmt extends TCustomSqlStatement { 021 022 public TSqliteCreateVirtualTableStmt(EDbVendor dbvendor) { 023 super(dbvendor); 024 sqlstatementtype = ESqlStatementType.sstSqliteCreateVirtualTable; 025 } 026 027 void buildsql() { 028 } 029 030 void clear() { 031 } 032 033 String getasprettytext() { 034 return ""; 035 } 036 037 void iterate(TVisitorAbs pvisitor) { 038 } 039 040 private TObjectName tableName = null; 041 042 /** 043 * Returns the virtual table name (may be schema-qualified). 044 */ 045 public TObjectName getTableName() { 046 return tableName; 047 } 048 049 private TObjectName moduleName = null; 050 051 /** 052 * Returns the module name (e.g., fts5, rtree). 053 */ 054 public TObjectName getModuleName() { 055 return moduleName; 056 } 057 058 public int doParseStatement(TCustomSqlStatement psql) { 059 if (rootNode == null) return -1; 060 super.doParseStatement(psql); 061 062 TDummy dummySqlNode = (TDummy) rootNode; 063 tableName = (TObjectName) dummySqlNode.node1; 064 if (dummySqlNode.node2 != null) { 065 moduleName = (TObjectName) dummySqlNode.node2; 066 } 067 068 return 0; 069 } 070 071 public void accept(TParseTreeVisitor v) { 072 v.preVisit(this); 073 v.postVisit(this); 074 } 075 076 public void acceptChildren(TParseTreeVisitor v) { 077 v.preVisit(this); 078 v.postVisit(this); 079 } 080}