public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext)
        {
            var problems = new List <SqlRuleProblem>();
            var sqlObj   = ruleExecutionContext.ModelElement;

            if (sqlObj == null || sqlObj.IsWhiteListed())
            {
                return(problems);
            }

            var fragment = ruleExecutionContext.ScriptFragment.GetFragment(typeof(CreateProcedureStatement));

            var execVisitor = new ExecuteVisitor();

            fragment.Accept(execVisitor);

            if (execVisitor.Count == 0)
            {
                return(problems);
            }

            foreach (var exec in execVisitor.Statements)
            {
                if (exec.ExecuteSpecification.ExecutableEntity is ExecutableProcedureReference proc &&
                    proc.Parameters.Any(p => p.Variable == null))
                {
                    problems.Add(new SqlRuleProblem(Message, sqlObj, exec));
                }
            }
            return(problems);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Parser         parser  = new Parser(new Lexer(""));
            ExecuteVisitor visitor = new ExecuteVisitor();

            Parser.SqlScript sqlStatements = parser.Parse("SELECT TABLE garwmer ( name TEXT name, age INT name, coin REAL name ) ;");
            Console.WriteLine(sqlStatements.Statements[0].TableName);
            sqlStatements.Statements[0].write_data();
            sqlStatements.Statements[0].Accept(ref visitor);
        }
Esempio n. 3
0
        public override IList <SqlRuleProblem> Analyze(SqlRuleExecutionContext ruleExecutionContext)
        {
            var problems = new List <SqlRuleProblem>();
            var sqlObj   = ruleExecutionContext.ModelElement;

            if (sqlObj == null || sqlObj.IsWhiteListed())
            {
                return(problems);
            }

            var objName = sqlObj.Name.GetName();

            var fragment = ruleExecutionContext.ScriptFragment.GetFragment(ProgrammingAndViewSchemaTypes);

            var fromClauseVisitor = new FromClauseVisitor();
            var execVisitor       = new ExecuteVisitor();

            fragment.Accept(fromClauseVisitor, execVisitor);

            var tableVisitor = new NamedTableReferenceVisitor()
            {
                TypeFilter = ObjectTypeFilter.PermanentOnly
            };

            foreach (var from in fromClauseVisitor.Statements)
            {
                from.Accept(tableVisitor);
            }

            var offenders = tableVisitor.Statements.Where(tbl =>
            {
                var id = tbl.GetObjectIdentifier(null);
                return(id.Parts.Count < 2 || string.IsNullOrWhiteSpace(id.Parts.First()));
            });

            var execOffenders = execVisitor.Statements.Where(proc => CheckProc(proc));

            problems.AddRange(offenders.Select(t => new SqlRuleProblem(Message, sqlObj, t)));
            problems.AddRange(execOffenders.Select(t => new SqlRuleProblem(Message, sqlObj, t)));

            return(problems);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            PascalABCNewLanguageParser parser = new PascalABCNewLanguageParser();

            string root    = @"C:\PABCWork.NET\Samples"; //args[0];
            var    files   = GetFiles(root);
            var    visitor = new CountVisitor();

            foreach (var x in files)
            {
                dynamic res = parser.BuildTree("ProgramFile", x, ParseMode.Normal);

                var executer = new ExecuteVisitor(visitor);
                if (res != null)
                {
                    executer.visit(res);
                }
            }
            List <KeyValuePair <string, int> > myList = visitor.nodeCount.ToList();

            myList.Sort((firstPair, nextPair) =>
            {
                return(nextPair.Value.CompareTo(firstPair.Value));
            }
                        );

            StreamWriter resFile = new StreamWriter("NodesCount.txt");

            foreach (KeyValuePair <string, int> x in myList)
            {
                if (x.Value > 0)
                {
                    resFile.WriteLine(x.Key + " - " + x.Value);
                }
            }
            resFile.Close();
            //Console.ReadKey();
        }
Esempio n. 5
0
        public void Execute(EJDB2Handle db, EJDB2Handle jql, long skip, long limit,
                            JQLCallback cb, StringWriter explain)
        {
            if (db.IsInvalid)
            {
                throw new ArgumentException("Invalid DB handle.");
            }

            if (db.IsClosed)
            {
                throw new ArgumentException("DB handle is closed.");
            }

            if (jql.IsInvalid)
            {
                throw new ArgumentException("Invalid JQL handle.");
            }

            if (jql.IsClosed)
            {
                throw new ArgumentException("JQL handle is closed.");
            }

            IntPtr log = IntPtr.Zero;

            try
            {
                if (explain != null)
                {
                    log = _helper.iwxstr_new();
                    if (log == IntPtr.Zero)
                    {
                        throw new InvalidOperationException("iwxstr_new failed.");
                    }
                }

                var ux = new EJDB_EXEC
                {
                    db      = db.DangerousGetHandle(),
                    q       = jql.DangerousGetHandle(),
                    skip    = skip > 0 ? skip : 0,
                    limit   = limit > 0 ? limit : 0,
                    opaque  = IntPtr.Zero,
                    visitor = null,
                    log     = log,
                };

                if (cb != null)
                {
                    var visitor = new ExecuteVisitor(_helper, cb);
                    ux.visitor = visitor.Visitor;
                }

                ulong rc = _helper.ejdb_exec(ref ux);
                if (rc != 0)
                {
                    throw _e.CreateException(rc);
                }

                if (log != IntPtr.Zero)
                {
                    string slog = Utf8String.FromIntPtr(_helper.iwxstr_ptr(log));
                    explain.Write(slog);
                }
            }
            finally
            {
                if (log != IntPtr.Zero)
                {
                    _helper.iwxstr_destroy(log);
                }
            }
        }