Trình phân tích cú pháp này đã được viết cách đây rất lâu và việc xử lý nhiều giá trị trong một tên kết quả mãi đến sau này mới xuất hiện.
Thay đổi dòng này trong trình phân tích cú pháp bạn đã trích dẫn:
single_source = ( (Group(database_name("database") + "." + table_name("table")) | table_name("table")) +
đến
single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) +
Khi tôi chạy câu lệnh mẫu của bạn thông qua trình phân tích cú pháp select_stmt, bây giờ tôi nhận được điều này:
select * from xyz inner join dhf on df = hfj where z > 100
['SELECT', ['*'], 'FROM', 'xyz', 'INNER', 'JOIN', 'dhf', 'ON', ['df', '=', 'hfj'], 'WHERE', ['z', '>', '100']]
- columns: ['*']
- table: [['xyz'], ['dhf']]
[0]:
['xyz']
[1]:
['dhf']
- where_expr: ['z', '>', '100']