コード例 #1
0
 public static async Task <IBindableStatement> ParseAsync(string sql)
 {
     try
     {
         return(await PParser.ParseAsync(sql));
     }
     catch (PhoenixSqlSyntaxException e)
     {
         throw new QsiSyntaxErrorException(-1, -1, e.Message);
     }
     catch (PhoenixSqlException e)
     {
         throw new QsiException(QsiError.Internal, e.Message);
     }
 }
コード例 #2
0
        public IQsiTreeNode Parse(QsiScript script, CancellationToken cancellationToken = default)
        {
            var result = PhoenixSqlParserInternal.Parse(script.Script);

            switch (result)
            {
            case SelectStatement selectStatement:
                return(TableVisitor.VisitSelectStatement(selectStatement));

            case CreateTableStatement {
                    TableType: PTableType.View
            } createTableStatement:
                return(TableVisitor.VisitCreateViewStatement(createTableStatement));

            case IDMLStatement dmlStatement:
                return(ActionVisitor.Visit(dmlStatement));

            case UseSchemaStatement useSchemaStatement:
                return(ActionVisitor.VisitUseSchemaStatement(useSchemaStatement));
            }

            throw TreeHelper.NotSupportedTree(result);
        }