From 4389516834de7ef6bdfc7844e0f1223e080bdb6d Mon Sep 17 00:00:00 2001 From: ygrek Date: Wed, 21 Jan 2015 10:56:45 -0800 Subject: [PATCH] actually allow to infer float types --- src/gen.ml | 2 +- src/sql_parser.mly | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gen.ml b/src/gen.ml index 925e459..977653c 100644 --- a/src/gen.ml +++ b/src/gen.ml @@ -110,7 +110,7 @@ let schema_to_values = List.mapi (fun i attr -> name_of attr i, T.as_lang_type a (* let schema_to_string = G.Values.to_string $ schema_to_values *) let all_params_to_values = List.mapi (fun i (n,t) -> param_name_to_string n i, T.as_lang_type t) (* rev unique rev -- to preserve ordering with respect to first occurrences *) -let params_to_values = List.rev $ List.unique $ List.rev $ all_params_to_values +let params_to_values = List.rev $ List.unique ~cmp:(=) $ List.rev $ all_params_to_values end diff --git a/src/sql_parser.mly b/src/sql_parser.mly index ec0c30c..ec316f2 100644 --- a/src/sql_parser.mly +++ b/src/sql_parser.mly @@ -341,7 +341,7 @@ attr_name: name=IDENT { (name,None) } | IDENT DOT table=IDENT DOT name=IDENT { (name,Some table) } (* FIXME database identifier *) expr: - expr numeric_bin_op expr %prec PLUS { `Func ((Int,false),[$1;$3]) } + expr numeric_bin_op expr %prec PLUS { `Func ((Any,false),[$1;$3]) } (* TODO default Int *) | expr boolean_bin_op expr %prec AND { `Func ((Bool,false),[$1;$3]) } | e1=expr comparison_op anyall? e2=expr %prec EQUAL { `Func ((Bool,false),[e1;e2]) } | expr CONCAT_OP expr { `Func ((Text,false),[$1;$3]) } @@ -365,9 +365,9 @@ expr: | PARAM { `Param ($1,Any) } | f=FUNCTION LPAREN p=func_params RPAREN { `Func (f,p) } | expr TEST_NULL { $1 } - | expr mnot(BETWEEN) expr AND expr { `Func ((Int,false),[$1;$3;$5]) } + | expr mnot(BETWEEN) expr AND expr { `Func ((Any,false),[$1;$3;$5]) } (* TODO default Int *) | mnot(EXISTS) LPAREN select=select_stmt RPAREN { `Func ((Bool,false),params_of select) } - | CASE e1=expr? branches=nonempty_list(case_branch) e2=preceded(ELSE,expr)? END + | CASE e1=expr? branches=nonempty_list(case_branch) e2=preceded(ELSE,expr)? END { let l = function None -> [] | Some x -> [x] in `Func ((Any,false),l e1 @ List.flatten branches @ l e2) @@ -388,7 +388,7 @@ literal_value: | TIMESTAMP TEXT { `Value Datetime } | NULL { `Value Any } (* he he *) -single_literal_value: +single_literal_value: | literal_value { $1 } | MINUS INTEGER { `Value Int } | MINUS FLOAT { `Value Float } -- 2.11.4.GIT