Skip to content

Instantly share code, notes, and snippets.

@nirbhayc
Created July 2, 2021 17:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nirbhayc/71bc18b9cdd6f5bd1d932dabb9c52912 to your computer and use it in GitHub Desktop.
Save nirbhayc/71bc18b9cdd6f5bd1d932dabb9c52912 to your computer and use it in GitHub Desktop.
sqlite parser tweak
diff --git a/sqlite/src/comdb2lua.c b/sqlite/src/comdb2lua.c
index 9fe75932..cfcdc984 100644
--- a/sqlite/src/comdb2lua.c
+++ b/sqlite/src/comdb2lua.c
@@ -145,8 +145,13 @@ Cdb2TrigTables *comdb2AddTriggerTable(Parse *parse, Cdb2TrigTables *tables,
// dynamic -> consumer
void comdb2CreateTrigger(Parse *parse, int dynamic, int seq, Token *proc,
- Cdb2TrigTables *tbl)
+ Cdb2TrigTables *tbl, int is_audited)
{
+ if (is_audited)
+ printf("==> creating an audited lua trigger\n");
+ else
+ printf("==> creating a regular lua trigger\n");
+
if (comdb2IsPrepareOnly(parse))
return;
diff --git a/sqlite/src/parse.y b/sqlite/src/parse.y
index 9abe97ad..d61bf3ab 100644
--- a/sqlite/src/parse.y
+++ b/sqlite/src/parse.y
@@ -2451,12 +2451,16 @@ cmd ::= createkw LUA AGGREGATE FUNCTION nm(Q). {
comdb2CreateAggFunc(pParse, &Q);
}
-cmd ::= createkw LUA TRIGGER nm(Q) withsequence(S) ON table_trigger_event(T). {
- comdb2CreateTrigger(pParse,0,S,&Q,T);
+%type audited_opt {int}
+audited_opt(A) ::= . { A = 0; }
+audited_opt(A) ::= AUDITED. { A = 1; }
+
+cmd ::= createkw LUA audited_opt(A) TRIGGER nm(Q) withsequence(S) ON table_trigger_event(T). {
+ comdb2CreateTrigger(pParse,0,S,&Q,T,A);
}
cmd ::= createkw LUA CONSUMER nm(Q) withsequence(S) ON table_trigger_event(T). {
- comdb2CreateTrigger(pParse,1,S,&Q,T);
+ comdb2CreateTrigger(pParse,1,S,&Q,T,0);
}
table_trigger_event(A) ::= table_trigger_event(B) COMMA LP TABLE fullname(T) FOR trigger_events(C) RP. {
diff --git a/sqlite/src/sqliteInt.h b/sqlite/src/sqliteInt.h
index 4920c82a..28df71ac 100644
--- a/sqlite/src/sqliteInt.h
+++ b/sqlite/src/sqliteInt.h
@@ -5027,7 +5027,7 @@ struct Cdb2TrigTables {
Cdb2TrigEvents *comdb2AddTriggerEvent(Parse*,Cdb2TrigEvents*,Cdb2TrigEvent*);
void comdb2DropTrigger(Parse*,int,Token*);
Cdb2TrigTables *comdb2AddTriggerTable(Parse*,Cdb2TrigTables*,SrcList*,Cdb2TrigEvents*);
-void comdb2CreateTrigger(Parse*,int dynamic,int seq,Token*,Cdb2TrigTables*);
+void comdb2CreateTrigger(Parse*,int dynamic,int seq,Token*,Cdb2TrigTables*,int);
void comdb2CreateScalarFunc(Parse *, Token *);
void comdb2DropScalarFunc(Parse *, Token *);
diff --git a/sqlite/tool/mkkeywordhash.c b/sqlite/tool/mkkeywordhash.c
index e4dd737e..92014d56 100644
--- a/sqlite/tool/mkkeywordhash.c
+++ b/sqlite/tool/mkkeywordhash.c
@@ -403,6 +403,7 @@ static Keyword aKeywordTable[] = {
{ "VERSION", "TK_VERSION", ALWAYS },
{ "WRITE", "TK_WRITE", ALWAYS },
{ "ZLIB", "TK_ZLIB", ALWAYS },
+ { "AUDITED", "TK_AUDITED", ALWAYS },
#endif /* defined(SQLITE_BUILDING_FOR_COMDB2) */
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment