------------------------------------------------------------------------- Ebase/SQL v1.1.2 Release note Jun Sun 07/14/20001 WHAT IS NEW? Changed license to GPL. ------------------------------------------------------------------------- Ebase/SQL v1.1.1 Release note USAGE sql Ebase/SQL will read a textual stream which represents SQL statmens from standard input. It will execute the SQL statments. See below for a detailed description of supported SQL statments. options : -c --check Check syntax only. -p --perl Disply the output in Perl friendly mode. See below. -h --help List usage syntax and options returns : 0 The statments are correctly executed. -1(65535) Ebase library internal error. -2(65534) Wrong options. -3(65533) One of the statments has a syntax error. The ones before the erroenous one are correctly executed. Exception thrown by Ebase library On errors, a detailed message is printed out in stderr file. Internal errors inside the parser (but outside the ebase library) will cause an assertion failure. LIMITATION : support multiple SQL statments separated by ";" each statment can only operate on one database support CREATE TABLE, INSERT INTO, SELECT, UPDATE, and DELETE statement For creating table (CREATE) only support CHAR(ACTER) and INT(EGER) data types column_def may not have optional part base_table_element_commalist does not optional table_constraint_def such as 'UNIQUE (column1, column2)', 'PRIMARY KEY (column)', etc table name will be appended with ".ebf" as the file name. For inserting into table (INSERT) VALUES cannot be queries. It can only be insert_atom_commalist. the number of columns specified may be different from the number of values supplied. If there more columns, the additional columns won't get values to set. If there more values, those values are discarded. For deleting a record (SELECT) no GROUP; nor HAVING selection must be column_ref_commalist or '*'. It cannot be general scalar experisson list. FROM only take one table name (since we only support one table at a time). WHERE clause predicate only supports integer/string comparison and string LIKE predicate LIKE predicate the wild char '%' can only appear in the beginning and/or the end. If it appears in other places, it is treated as a normal char. if no '%' appears at the beginning or the end, LIKE is equivalent to '==' operator. DIFFERENCE & EXTENSION FROM STD SQL/92 The Equal comparison uses '==' instead of '='. No NULL data support. Non-assigned fields will have default values. For INTEGER, the value is 0, and for STRING, the value is "". FUTURE WORK add ORDERED BY to SELECT for selecting index add SORTED after field def for defining index