コード例 #1
0
ファイル: PostgreAnalyser.cs プロジェクト: janproch/datadmin
        protected override void LoadIndexes()
        {
            if (!m_members.TableMembers.Contains(TableStructureMembers.Indexes))
            {
                return;
            }

            var data = m_conn.SystemConnection.LoadTableFromQuery("select * from pg_indexes where schemaname!='pg_catalog'");

            foreach (DataRow row in data.Rows)
            {
                string            sql    = row["indexdef"].SafeToString();
                PostgreSQLLexer   lexer  = new PostgreSQLLexer(new ANTLRReaderStream(new StringReader(sql)));
                CommonTokenStream tokens = new CommonTokenStream(lexer);
                PostgreSQLParser  parser = new PostgreSQLParser(tokens);
                IndexConstraint   index  = new IndexConstraint();
                parser.create_index(index);
                if (parser.Errors != null)
                {
                    throw new PostgreSqlParseCreateIndexError(parser.Errors, sql);
                }
                if (index.TableName.Schema == null)
                {
                    index.SetDummyTable(new NameWithSchema("public", index.TableName.Name));
                }
                if (!m_loadedIndexes.ContainsKey(index.TableName))
                {
                    m_loadedIndexes[index.TableName] = new List <IndexConstraint>();
                }
                m_loadedIndexes[index.TableName].Add(index);
            }

            base.LoadIndexes();
        }
コード例 #2
0
    public static PostgreSQLParser getPostgreSQLParser(string script)
    {
        var CharStream    = CharStreams.fromString(script);
        var Lexer         = new PostgreSQLLexer(CharStream);
        var Tokens        = new CommonTokenStream(Lexer);
        var Parser        = new PostgreSQLParser(Tokens);
        var ErrorListener = new PostgreSQLParserErrorListener();

        ErrorListener.grammar = Parser;
        Parser.AddErrorListener(ErrorListener);
        return(Parser);
    }
コード例 #3
0
    public PostgreSQLParser getPostgreSQLParser(string script)
    {
        var charStream = CharStreams.fromString(script);
        var lexer      = new PostgreSQLLexer(charStream);
        var tokens     = new CommonTokenStream(lexer);
        var parser     = new PostgreSQLParser(tokens);

        lexer.RemoveErrorListeners();
        parser.RemoveErrorListeners();
        var listener_lexer  = new LexerDispatchingErrorListener((this.InputStream as CommonTokenStream).TokenSource as Lexer);
        var listener_parser = new ParserDispatchingErrorListener(this);

        lexer.AddErrorListener(listener_lexer);
        parser.AddErrorListener(listener_parser);
        return(parser);
    }