def test_is_bql(): assert ast.is_bql(ast.ExpLit(ast.LitInt(0))) == False assert ast.is_bql(ast.ExpNumpar(0)) == False assert ast.is_bql(ast.ExpNampar(0, 'x')) == False assert ast.is_bql(ast.ExpCol('t', 'c')) == False # ... assert ast.is_bql(ast.ExpBQLPredProb('c')) assert ast.is_bql(ast.ExpBQLProb([('c', ast.ExpLit(ast.LitInt(0)))], [])) assert ast.is_bql(ast.ExpBQLProbFn(ast.ExpLit(ast.LitInt(0)), [])) assert ast.is_bql(ast.ExpBQLSim(ast.ExpLit(ast.LitInt(0)), [])) assert ast.is_bql(ast.ExpBQLDepProb('c0', 'c1')) assert ast.is_bql(ast.ExpBQLMutInf('c0', 'c1', None, 100)) assert ast.is_bql(ast.ExpBQLCorrel('c0', 'c1')) assert ast.is_bql(ast.ExpBQLPredict('c', ast.ExpLit(ast.LitInt(.5)), None)) assert ast.is_bql(ast.ExpBQLPredictConf('c', None))
def p_primary_nampar(self, n): return ast.ExpNampar(n[0], n[1])
def test_parametrized(): assert parse_bql_string('select * from t where id = ?;') == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'id'), ast.ExpNumpar(1), )), None, None, None), 1, {})] assert parse_bql_string('select * from t where id = ?123;') == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'id'), ast.ExpNumpar(123), )), None, None, None), 123, {})] assert parse_bql_string('select * from t where id = :foo;') == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'id'), ast.ExpNampar(1, ':foo'), )), None, None, None), 1, {':foo': 1})] assert parse_bql_string('select * from t where a = :foo and b = @foo;') \ == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_BOOLAND, ( ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'a'), ast.ExpNampar(1, ':foo'), )), ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'b'), ast.ExpNampar(2, '@foo'), )), )), None, None, None), 2, {':foo': 1, '@foo': 2})] assert parse_bql_string('select * from t where a = $foo and b = ?1;') == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_BOOLAND, ( ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'a'), ast.ExpNampar(1, '$foo'), )), ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'b'), ast.ExpNumpar(1), )), )), None, None, None), 1, {'$foo': 1})] assert parse_bql_string('select * from t' + ' where a = ?123 and b = :foo and c = ?124;') == \ [ast.Parametrized(ast.Select(ast.SELQUANT_ALL, [ast.SelColAll(None)], [ast.SelTab('t', None)], ast.ExpOp(ast.OP_BOOLAND, ( ast.ExpOp(ast.OP_BOOLAND, ( ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'a'), ast.ExpNumpar(123), )), ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'b'), ast.ExpNampar(124, ':foo'), )), )), ast.ExpOp(ast.OP_EQ, ( ast.ExpCol(None, 'c'), ast.ExpNumpar(124), )), )), None, None, None), 124, {':foo': 124})]
def p_primary_nampar(self, n): return ast.ExpNampar(n[0],n[1]) def p_primary_apply(self, fn, es): return ast.ExpApp(False,fn,es)