feat: deprecate legacy APIs (#304)
* feat: deprecation of legacy APIs * feat: deprecate plsql language
This commit is contained in:
		@ -1,12 +0,0 @@
 | 
			
		||||
import { PLSQL } from 'src/parser/plsql';
 | 
			
		||||
 | 
			
		||||
describe('PLSQL Lexer tests', () => {
 | 
			
		||||
    const plsql = new PLSQL();
 | 
			
		||||
 | 
			
		||||
    const sql = 'select id,name,sex from user1;';
 | 
			
		||||
    const tokens = plsql.getAllTokens(sql);
 | 
			
		||||
 | 
			
		||||
    test('token counts', () => {
 | 
			
		||||
        expect(tokens.length).toBe(12);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@ -1,24 +0,0 @@
 | 
			
		||||
import { PLSQL } from 'src/parser/plsql';
 | 
			
		||||
import { PlSqlParserListener } from 'src/lib/plsql/PlSqlParserListener';
 | 
			
		||||
 | 
			
		||||
describe('PLSQL Listener Tests', () => {
 | 
			
		||||
    const expectTableName = 'user1';
 | 
			
		||||
    const sql = `select id,name,sex from ${expectTableName};`;
 | 
			
		||||
    const plsql = new PLSQL();
 | 
			
		||||
 | 
			
		||||
    const parseTree = plsql.parse(sql);
 | 
			
		||||
 | 
			
		||||
    test('Listener enterTableName', async () => {
 | 
			
		||||
        class MyListener extends PlSqlParserListener {
 | 
			
		||||
            result = '';
 | 
			
		||||
 | 
			
		||||
            enterTable_ref_list = (ctx) => {
 | 
			
		||||
                this.result = ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        const listener = new MyListener();
 | 
			
		||||
 | 
			
		||||
        plsql.listen(listener, parseTree);
 | 
			
		||||
        expect(listener.result).toBe(expectTableName);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@ -1,23 +0,0 @@
 | 
			
		||||
import { PLSQL } from 'src/parser/plsql';
 | 
			
		||||
 | 
			
		||||
describe('PLSQL Syntax Tests', () => {
 | 
			
		||||
    const plsql = new PLSQL();
 | 
			
		||||
 | 
			
		||||
    test('Test simple select Statement', () => {
 | 
			
		||||
        const sql = 'select id,name from user1;';
 | 
			
		||||
        const result = plsql.validate(sql);
 | 
			
		||||
 | 
			
		||||
        expect(result.length).toBe(0);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test(`Test select, where, order by`, () => {
 | 
			
		||||
        const sql = `
 | 
			
		||||
            select eid, emp_last, mgr_id, reportlevel
 | 
			
		||||
            from reports_to_101 r, auto a
 | 
			
		||||
            where r.c1 = a.c2
 | 
			
		||||
            order by reportlevel, eid
 | 
			
		||||
        `;
 | 
			
		||||
        const result = plsql.validate(sql);
 | 
			
		||||
        expect(result.length).toBe(0);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@ -1,31 +0,0 @@
 | 
			
		||||
import { PLSQL } from 'src/parser/plsql';
 | 
			
		||||
import { PlSqlParserVisitor } from 'src/lib/plsql/PlSqlParserVisitor';
 | 
			
		||||
 | 
			
		||||
describe('PLSQL Visitor Tests', () => {
 | 
			
		||||
    const expectTableName = 'user1';
 | 
			
		||||
    const sql = `select id,name,sex from ${expectTableName};`;
 | 
			
		||||
    const plsql = new PLSQL();
 | 
			
		||||
 | 
			
		||||
    const parseTree = plsql.parse(sql);
 | 
			
		||||
 | 
			
		||||
    test('Visitor visitTable_ref_list', () => {
 | 
			
		||||
        class MyVisitor extends PlSqlParserVisitor<string> {
 | 
			
		||||
            defaultResult(): string {
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            aggregateResult(aggregate: string, nextResult: string): string {
 | 
			
		||||
                return aggregate + nextResult;
 | 
			
		||||
            }
 | 
			
		||||
            visitProgram = (ctx) => {
 | 
			
		||||
                return this.visitChildren(ctx);
 | 
			
		||||
            };
 | 
			
		||||
            visitTable_ref_list = (ctx) => {
 | 
			
		||||
                return ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        const visitor = new MyVisitor();
 | 
			
		||||
        const result = visitor.visit(parseTree);
 | 
			
		||||
 | 
			
		||||
        expect(result).toBe(expectTableName);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@ -1,89 +0,0 @@
 | 
			
		||||
import { legacy_lexer, legacy_splitSql, legacy_cleanSql } from '../../src/utils';
 | 
			
		||||
import { Legacy_TokenType } from '../../src/utils/token';
 | 
			
		||||
 | 
			
		||||
describe('utils', () => {
 | 
			
		||||
    test('split single sql', () => {
 | 
			
		||||
        const sql = 'select id,name from user';
 | 
			
		||||
        const result = legacy_splitSql(sql);
 | 
			
		||||
        expect(result.length).toEqual(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('split multiple sql', () => {
 | 
			
		||||
        const sql = `-- a ;
 | 
			
		||||
        select * from a;
 | 
			
		||||
        /* 
 | 
			
		||||
            xxx
 | 
			
		||||
            xxx
 | 
			
		||||
        */
 | 
			
		||||
        select user from b`;
 | 
			
		||||
        const result = legacy_splitSql(sql);
 | 
			
		||||
        expect(result.length).toEqual(2);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('split special quotation sql', () => {
 | 
			
		||||
        const sql = `select regexp_replace('a', 'bc', 'xfe'feefe', '233'); 
 | 
			
		||||
            select regexp_replace('abc', "fe", '233');`;
 | 
			
		||||
        const result = legacy_splitSql(sql);
 | 
			
		||||
        expect(result.length).toEqual(2);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // test nested bracket
 | 
			
		||||
    test('split nested bracket sql', () => {
 | 
			
		||||
        const sql = `WITH cte_sales_amounts (staff, sales, year) 
 | 
			
		||||
        AS 
 | 
			
		||||
        (
 | 
			
		||||
            SELECT    
 | 
			
		||||
                first_name + ' ' + last_name, 
 | 
			
		||||
                SUM(quantity * list_price * (1 - discount)),
 | 
			
		||||
                YEAR(order_date)
 | 
			
		||||
            FROM    
 | 
			
		||||
                sales.orders o
 | 
			
		||||
            INNER JOIN sales.order_items i ON i.order_id = o.order_id
 | 
			
		||||
            INNER JOIN sales.staffs s ON s.staff_id = o.staff_id
 | 
			
		||||
        )
 | 
			
		||||
        SELECT staff, sales
 | 
			
		||||
        FROM cte_sales_amounts
 | 
			
		||||
        WHERE year = 2018;
 | 
			
		||||
        SELECT * FROM table;`;
 | 
			
		||||
        const result = legacy_splitSql(sql);
 | 
			
		||||
        expect(result.length).toEqual(2);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('lexer', () => {
 | 
			
		||||
        const sql = `-- a ;
 | 
			
		||||
        select * from a;
 | 
			
		||||
        /* 
 | 
			
		||||
            xxx
 | 
			
		||||
            xxx
 | 
			
		||||
        */
 | 
			
		||||
        select user from b;`;
 | 
			
		||||
        const result = legacy_lexer(sql);
 | 
			
		||||
        expect(result.length).toEqual(4);
 | 
			
		||||
    });
 | 
			
		||||
    test('lexer for comments', () => {
 | 
			
		||||
        const sql = `select * from a;--comments`;
 | 
			
		||||
        const expected = `--comments`;
 | 
			
		||||
        const result = legacy_lexer(sql);
 | 
			
		||||
        const comments = result.find((token) => token.type === Legacy_TokenType.Comment);
 | 
			
		||||
        expect(comments?.value).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
    test('cleanSql', () => {
 | 
			
		||||
        const sql = `-- a ;
 | 
			
		||||
        select * from a;
 | 
			
		||||
        /* 
 | 
			
		||||
            xxx
 | 
			
		||||
            xxx
 | 
			
		||||
        */
 | 
			
		||||
        select user from b`;
 | 
			
		||||
        const result = legacy_cleanSql(sql);
 | 
			
		||||
        expect(result.indexOf('xxx')).toEqual(-1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('clean SQL white spaces', () => {
 | 
			
		||||
        const sql = `   
 | 
			
		||||
        select * from a;    `;
 | 
			
		||||
        const expected = 'select * from a;';
 | 
			
		||||
        const result = legacy_cleanSql(sql);
 | 
			
		||||
        expect(result).toEqual(expected);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user