Module Sqml (.ml)


module Sqml: sig .. end
Parsing SQL select and union queries.


Abstract syntax



Abstract Syntax for Queries


type query = query_exp * ordering list 
type query_exp = query_exp 
type select = [ `all | `distinct | `nomod ] * selection * from *
where option * group_by option * having option
type selection = selection 
type from = [ `table of string | `tableas of string * string ] list 
type where = condition 
type group_by = column list 
type column = column 
type having = condition 
type condition = condition 
type predicate = predicate 
type comparison = comparison 
type exp = exp 
type atom = atom 
type functioncall = function_label *
[ `distinct of column | `exp of [ `all | `nomod ] * exp | `star ]
type function_label = function_label 
type parameter = parameter 

Abstract Syntax for Insert


type insert = string * string list *
[ `select of select | `values of [ `atom of atom | `null ] list ]

Abstract Syntax for Schemas


type cmd = cmd 
type schemadef = string * schema_element list 
type schema_element = schema_element 

Abstract Syntax for create table


type tabledef = string * table_element list 
type table_element = table_element 
type columndef = string * data_type * column_opt list 
type data_type = data_type 
type literal = literal 
type column_opt = column_opt 
type tblcnstr = tblcnstr 

Abstract Syntax for create view


type viewdef = string * string list * select * [ `check | `nocheck ] 

Abstract Syntax for grant


type privdef = privilege * string * grantee list *
[ `grantoption | `nograntoption ]
type privilege = privilege 
type operation = operation 
type grantee = grantee 

Abstract Syntax for modules


type moddef = string option * lang * string * cursor_def list *
procedure_def list
type lang = lang 
type cursor_def = string * query_exp * ordering list 
type ordering = [ `column of column | `numcolumn of int ] * [ `asc | `desc ] option 
type procedure_def = string * parameter_def list * manipulative_statement list 
type parameter_def = parameter_def 
type manipulative_statement = manipulative_statement 
type assignment = assignment 
type when_action = when_action 

Parsing


exception Syntax_error = Sqml_sqlstx.Syntax_error
val parse_full_select : Lexing.lexbuf -> Sqml_sqlstx.select * Sqml_sqlstx.ordering list
val parse_query : Lexing.lexbuf -> Sqml_sqlstx.query
val parse_command : Lexing.lexbuf -> Sqml_sqlstx.cmd
val parse_command_list : Lexing.lexbuf -> Sqml_sqlstx.cmd list
val query_of_string : string -> Sqml_sqlstx.query