added class and keywords for updates
This commit is contained in:
parent
b86bf6e7f9
commit
789a4a5b9b
|
@ -12,4 +12,6 @@ SELECT city, AVG(grade) AS average|, MIN(grade) AS best, MAX(grade) AS worst FRO
|
|||
# UNION
|
||||
SELECT * FROM students WHERE grade = 1.3 UNION SELECT * FROM students WHERE grade = 3.7;
|
||||
# JOIN
|
||||
SELECT * FROM companies JOIN employees ON company_id = employee_company_id;
|
||||
SELECT * FROM companies JOIN employees ON company_id = employee_company_id;
|
||||
# INSERT
|
||||
INSERT INTO students VALUES ('Max', 10101, 'Musterhausen', 3.3);
|
|
@ -15,6 +15,7 @@ typedef enum {
|
|||
kStmtSelect,
|
||||
kStmtImport,
|
||||
kStmtInsert,
|
||||
kStmtUpdate,
|
||||
// Following types are planned but not supported yet
|
||||
kStmtDelete,
|
||||
kStmtCreate,
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef __UPDATE_STATEMENT_H__
|
||||
#define __UPDATE_STATEMENT_H__
|
||||
|
||||
#include "Statement.h"
|
||||
|
||||
namespace hsql {
|
||||
|
||||
struct UpdateClause {
|
||||
char* column;
|
||||
Expr* value;
|
||||
};
|
||||
|
||||
struct UpdateStatement : Statement {
|
||||
UpdateStatement() :
|
||||
Statement(kStmtUpdate),
|
||||
table(NULL),
|
||||
updates(NULL),
|
||||
where(NULL) {}
|
||||
|
||||
virtual ~UpdateStatement(); // defined in destructors.cpp
|
||||
|
||||
TableRef* table;
|
||||
List<UpdateClause*> updates;
|
||||
Expr* where;
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // namsepace hsql
|
||||
#endif
|
|
@ -1,10 +1,12 @@
|
|||
|
||||
#ifndef __SQLLIB_H__
|
||||
#define __SQLLIB_H__
|
||||
|
||||
|
||||
#include "SelectStatement.h"
|
||||
#include "ImportStatement.h"
|
||||
#include "CreateStatement.h"
|
||||
#include "InsertStatement.h"
|
||||
#include "UpdateStatement.h"
|
||||
|
||||
|
||||
#endif
|
|
@ -107,17 +107,19 @@ typedef void* yyscan_t;
|
|||
%token <uval> NOTEQUALS LESSEQ GREATEREQ
|
||||
|
||||
/* SQL Keywords */
|
||||
%token INTERSECT TEMPORARY DISTINCT RESTRICT TRUNCATE
|
||||
%token ANALYZE BETWEEN CASCADE COLUMNS CONTROL DEFAULT
|
||||
%token EXPLAIN HISTORY NATURAL PRIMARY SCHEMAS SPATIAL
|
||||
%token BEFORE COLUMN CREATE DELETE DIRECT ESCAPE EXCEPT
|
||||
%token EXISTS GLOBAL HAVING IMPORT INSERT ISNULL OFFSET
|
||||
%token RENAME SCHEMA SELECT SORTED TABLES UNIQUE UNLOAD
|
||||
%token UPDATE VALUES AFTER ALTER CROSS GROUP INDEX INNER
|
||||
%token LIMIT LOCAL MINUS ORDER OUTER RIGHT TABLE UNION USING
|
||||
%token WHERE CALL DESC DROP FILE FROM FULL HASH INTO JOIN
|
||||
%token LEFT LIKE LOAD NULL PLAN SHOW WITH ADD ALL AND ASC
|
||||
%token CSV FOR KEY NOT SET TBL TOP AS BY IF IN IS ON OR TO
|
||||
%token PARAMETERS INTERSECT TEMPORARY TIMESTAMP DISTINCT
|
||||
%token NVARCHAR RESTRICT TRUNCATE ANALYZE BETWEEN CASCADE
|
||||
%token COLUMNS CONTROL DEFAULT EXPLAIN HISTORY INTEGER
|
||||
%token NATURAL PRIMARY SCHEMAS SPATIAL VIRTUAL BEFORE COLUMN
|
||||
%token CREATE DELETE DIRECT DOUBLE ESCAPE EXCEPT EXISTS
|
||||
%token GLOBAL HAVING IMPORT INSERT ISNULL OFFSET RENAME
|
||||
%token SCHEMA SELECT SORTED TABLES UNIQUE UNLOAD UPDATE
|
||||
%token VALUES AFTER ALTER CROSS DELTA GROUP INDEX INNER
|
||||
%token LIMIT LOCAL MERGE MINUS ORDER OUTER RIGHT TABLE UNION
|
||||
%token USING WHERE CALL DATE DESC DROP FILE FROM FULL HASH
|
||||
%token INTO JOIN LEFT LIKE LOAD NULL PART PLAN SHOW TEXT
|
||||
%token TIME VIEW WITH ADD ALL AND ASC CSV FOR KEY NOT OFF
|
||||
%token SET TBL TOP AS BY IF IN IS OF ON OR TO
|
||||
|
||||
|
||||
/*********************************
|
||||
|
|
|
@ -57,9 +57,13 @@
|
|||
[ \t\n]+ /* skip whitespace */;
|
||||
|
||||
|
||||
|
||||
PARAMETERS TOKEN(PARAMETERS)
|
||||
INTERSECT TOKEN(INTERSECT)
|
||||
TEMPORARY TOKEN(TEMPORARY)
|
||||
TIMESTAMP TOKEN(TIMESTAMP)
|
||||
DISTINCT TOKEN(DISTINCT)
|
||||
NVARCHAR TOKEN(NVARCHAR)
|
||||
RESTRICT TOKEN(RESTRICT)
|
||||
TRUNCATE TOKEN(TRUNCATE)
|
||||
ANALYZE TOKEN(ANALYZE)
|
||||
|
@ -70,15 +74,18 @@ CONTROL TOKEN(CONTROL)
|
|||
DEFAULT TOKEN(DEFAULT)
|
||||
EXPLAIN TOKEN(EXPLAIN)
|
||||
HISTORY TOKEN(HISTORY)
|
||||
INTEGER TOKEN(INTEGER)
|
||||
NATURAL TOKEN(NATURAL)
|
||||
PRIMARY TOKEN(PRIMARY)
|
||||
SCHEMAS TOKEN(SCHEMAS)
|
||||
SPATIAL TOKEN(SPATIAL)
|
||||
VIRTUAL TOKEN(VIRTUAL)
|
||||
BEFORE TOKEN(BEFORE)
|
||||
COLUMN TOKEN(COLUMN)
|
||||
CREATE TOKEN(CREATE)
|
||||
DELETE TOKEN(DELETE)
|
||||
DIRECT TOKEN(DIRECT)
|
||||
DOUBLE TOKEN(DOUBLE)
|
||||
ESCAPE TOKEN(ESCAPE)
|
||||
EXCEPT TOKEN(EXCEPT)
|
||||
EXISTS TOKEN(EXISTS)
|
||||
|
@ -100,11 +107,13 @@ VALUES TOKEN(VALUES)
|
|||
AFTER TOKEN(AFTER)
|
||||
ALTER TOKEN(ALTER)
|
||||
CROSS TOKEN(CROSS)
|
||||
DELTA TOKEN(DELTA)
|
||||
GROUP TOKEN(GROUP)
|
||||
INDEX TOKEN(INDEX)
|
||||
INNER TOKEN(INNER)
|
||||
LIMIT TOKEN(LIMIT)
|
||||
LOCAL TOKEN(LOCAL)
|
||||
MERGE TOKEN(MERGE)
|
||||
MINUS TOKEN(MINUS)
|
||||
ORDER TOKEN(ORDER)
|
||||
OUTER TOKEN(OUTER)
|
||||
|
@ -114,6 +123,7 @@ UNION TOKEN(UNION)
|
|||
USING TOKEN(USING)
|
||||
WHERE TOKEN(WHERE)
|
||||
CALL TOKEN(CALL)
|
||||
DATE TOKEN(DATE)
|
||||
DESC TOKEN(DESC)
|
||||
DROP TOKEN(DROP)
|
||||
FILE TOKEN(FILE)
|
||||
|
@ -126,8 +136,12 @@ LEFT TOKEN(LEFT)
|
|||
LIKE TOKEN(LIKE)
|
||||
LOAD TOKEN(LOAD)
|
||||
NULL TOKEN(NULL)
|
||||
PART TOKEN(PART)
|
||||
PLAN TOKEN(PLAN)
|
||||
SHOW TOKEN(SHOW)
|
||||
TEXT TOKEN(TEXT)
|
||||
TIME TOKEN(TIME)
|
||||
VIEW TOKEN(VIEW)
|
||||
WITH TOKEN(WITH)
|
||||
ADD TOKEN(ADD)
|
||||
ALL TOKEN(ALL)
|
||||
|
@ -137,6 +151,7 @@ CSV TOKEN(CSV)
|
|||
FOR TOKEN(FOR)
|
||||
KEY TOKEN(KEY)
|
||||
NOT TOKEN(NOT)
|
||||
OFF TOKEN(OFF)
|
||||
SET TOKEN(SET)
|
||||
TBL TOKEN(TBL)
|
||||
TOP TOKEN(TOP)
|
||||
|
@ -145,6 +160,7 @@ BY TOKEN(BY)
|
|||
IF TOKEN(IF)
|
||||
IN TOKEN(IN)
|
||||
IS TOKEN(IS)
|
||||
OF TOKEN(OF)
|
||||
ON TOKEN(ON)
|
||||
OR TOKEN(OR)
|
||||
TO TOKEN(TO)
|
||||
|
|
|
@ -29,8 +29,6 @@ with open("sql_keywords.txt", 'r') as fh:
|
|||
|
||||
#################
|
||||
# Bison
|
||||
|
||||
|
||||
line = "%token"
|
||||
max_len = 60
|
||||
|
||||
|
|
|
@ -39,14 +39,15 @@ CREATE
|
|||
TABLE
|
||||
SCHEMA
|
||||
INDEX
|
||||
VIEW
|
||||
IF
|
||||
NOT
|
||||
EXISTS
|
||||
GLOBAL
|
||||
LOCAL
|
||||
TEMPORARY
|
||||
WITH
|
||||
UNIQUE
|
||||
VIRTUAL
|
||||
|
||||
INDEX
|
||||
UNIQUE
|
||||
|
@ -72,7 +73,6 @@ AFTER
|
|||
// Data Manipulation
|
||||
INSERT
|
||||
VALUES
|
||||
SET
|
||||
DIRECT
|
||||
SORTED
|
||||
|
||||
|
@ -83,22 +83,30 @@ TBL
|
|||
CONTROL
|
||||
|
||||
UPDATE
|
||||
SET
|
||||
|
||||
DELETE
|
||||
HISTORY
|
||||
|
||||
TRUNCATE
|
||||
|
||||
MERGE
|
||||
HISTORY
|
||||
DELTA
|
||||
OF
|
||||
PART
|
||||
|
||||
LOAD
|
||||
UNLOAD
|
||||
|
||||
DELETE
|
||||
|
||||
///////////////////////////////
|
||||
// other statements
|
||||
RENAME
|
||||
TO
|
||||
DELETE
|
||||
EXPLAIN
|
||||
PLAN
|
||||
ANALYZE
|
||||
LOAD
|
||||
UNLOAD
|
||||
|
||||
SHOW
|
||||
SCHEMAS
|
||||
|
@ -113,6 +121,7 @@ SET
|
|||
DEFAULT
|
||||
CALL
|
||||
FOR
|
||||
TO
|
||||
|
||||
|
||||
// Expressions
|
||||
|
@ -125,4 +134,19 @@ IN
|
|||
IS
|
||||
ISNULL
|
||||
BETWEEN
|
||||
ESCAPE
|
||||
ESCAPE
|
||||
|
||||
// With
|
||||
WITH
|
||||
PARAMETERS
|
||||
ON
|
||||
OFF
|
||||
|
||||
// Data types
|
||||
DATE
|
||||
TIME
|
||||
TIMESTAMP
|
||||
INTEGER
|
||||
DOUBLE
|
||||
NVARCHAR
|
||||
TEXT
|
||||
|
|
Loading…
Reference in New Issue