drift/sqlparser/test/parser/select/common_table_expression_tes...

72 lines
2.0 KiB
Dart

import 'package:sqlparser/sqlparser.dart';
import 'package:test/test.dart';
import '../utils.dart';
void main() {
test('parses WITH clauses', () {
testStatement(
'''
WITH RECURSIVE
cnt(x) AS (
SELECT 1
UNION ALL
SELECT x+1 FROM cnt
LIMIT 1000000
)
SELECT x FROM cnt;
''',
SelectStatement(
withClause: WithClause(
recursive: true,
ctes: [
CommonTableExpression(
cteTableName: 'cnt',
columnNames: ['x'],
as: CompoundSelectStatement(
base: SelectStatement(
columns: [
ExpressionResultColumn(
expression: NumericLiteral(
1,
token(TokenType.numberLiteral),
),
),
],
),
additional: [
CompoundSelectPart(
mode: CompoundSelectMode.unionAll,
select: SelectStatement(
columns: [
ExpressionResultColumn(
expression: BinaryExpression(
Reference(columnName: 'x'),
token(TokenType.plus),
NumericLiteral(1, token(TokenType.numberLiteral)),
),
),
],
from: [TableReference('cnt')],
limit: Limit(
count: NumericLiteral(
1000000,
token(TokenType.numberLiteral),
),
),
),
),
],
),
),
],
),
columns: [
ExpressionResultColumn(expression: Reference(columnName: 'x')),
],
from: [TableReference('cnt')],
),
);
});
}