summaryrefslogtreecommitdiff
path: root/test/scanners/sql/mysql-long-queries.expected.raydebug
diff options
context:
space:
mode:
Diffstat (limited to 'test/scanners/sql/mysql-long-queries.expected.raydebug')
-rw-r--r--test/scanners/sql/mysql-long-queries.expected.raydebug254
1 files changed, 254 insertions, 0 deletions
diff --git a/test/scanners/sql/mysql-long-queries.expected.raydebug b/test/scanners/sql/mysql-long-queries.expected.raydebug
new file mode 100644
index 0000000..a0d0886
--- /dev/null
+++ b/test/scanners/sql/mysql-long-queries.expected.raydebug
@@ -0,0 +1,254 @@
+comment(/* This is a modified copy of the
+ query linked above to test other keywords: */)
+class(SELECT) ident(sd)operator(.)ident(qbclass)operator(,) comment(-- Comments Test)
+ predefined(Sum)operator(()ident(sd)operator(.)ident(amount)operator(\)) reserved(AS) ident(invoiceamount)operator(,) comment(# Comments Test)
+ predefined(Sum)operator(()ident(scd1)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod1)operator(,)
+ predefined(Sum)operator(()ident(scd2)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod2)operator(,)
+ predefined(Sum)operator(()ident(scd3)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod3)
+reserved(FROM) ident(studentdebit) reserved(AS) ident(sd)
+ reserved(LEFT) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 1 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\))
+ comment(/* PERIOD 1 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(1) ident(MONTH)
+ reserved(LEFT) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd1)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd1)operator(.)ident(studentdebitid)
+ reserved(LEFT) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 2 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(1) ident(MONTH)
+ comment(/* PERIOD 2 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(2) ident(MONTH)
+ reserved(LEFT) reserved(OUTER) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd2)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd2)operator(.)ident(studentdebitid)
+ reserved(RIGHT) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 3 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(2) ident(MONTH)
+ comment(/* PERIOD 3 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+ reserved(LEFT) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd3)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd3)operator(.)ident(studentdebitid)
+reserved(WHERE) ident(sd)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(sd)operator(.)ident(status) operator(=) integer(0) comment(/* Normal */)
+ comment(/* Exclude Voided Invoices */)
+ reserved(AND) ident(sd)operator(.)ident(adjustsdebitid) reserved(IS) pre_constant(NULL)
+ reserved(AND) ident(sd)operator(.)ident(studentdebitid) reserved(NOT) ident(IN) operator(()class(SELECT) ident(adjustsdebitid)
+ reserved(FROM) ident(studentdebit)
+ reserved(WHERE) ident(adjustsdebitid) reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))
+ comment(/* FULL PERIOD */)
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(<) predefined(Now)operator(()operator(\))
+ comment(/* FULL PERIOD */)
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+reserved(GROUP) reserved(BY) ident(sd)operator(.)ident(qbclass)
+comment(/* Formatting only */)
+reserved(UNION) reserved(ALL)
+class(SELECT) string<delimiter(')content(---)delimiter(')>operator(,)
+ string<delimiter(')content(---)delimiter(')>operator(,)
+ string<delimiter(')content(---)delimiter(')>operator(,)
+ string<delimiter(')content(---)delimiter(')>operator(,)
+ string<delimiter(')content(---)delimiter(')>
+comment(/* Payment Types Summary */)
+reserved(UNION) reserved(DISTINCT)
+class(SELECT) ident(credittype)operator(,)
+ ident(invoiceamount)operator(,)
+ predefined(Sum)operator(()ident(paymentsperiod1)operator(\))operator(,)
+ predefined(Sum)operator(()ident(paymentsperiod2)operator(\))operator(,)
+ predefined(Sum)operator(()ident(paymentsperiod3)operator(\))
+reserved(FROM) operator(()class(SELECT) ident(scd)operator(.)ident(credittype)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(invoiceamount)operator(,)
+ predefined(Sum)operator(()ident(scd)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod1)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod2)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod3)
+ reserved(FROM) ident(studentdebit) reserved(AS) ident(sd)
+ reserved(INNER) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 1 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\))
+ comment(/* PERIOD 1 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(1) ident(MONTH)
+ reserved(LEFT) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd)operator(.)ident(studentdebitid)
+ reserved(WHERE) ident(sd)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(sd)operator(.)ident(status) operator(=) integer(0) comment(/* Normal */)
+ comment(/* Exclude Voided Invoices */)
+ reserved(AND) ident(sd)operator(.)ident(adjustsdebitid) reserved(IS) pre_constant(NULL)
+ reserved(AND) ident(sd)operator(.)ident(studentdebitid) reserved(NOT) ident(IN) operator(()class(SELECT) ident(adjustsdebitid)
+ reserved(FROM) ident(studentdebit)
+ reserved(WHERE) ident(adjustsdebitid) reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(<) predefined(Now)operator(()operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+ reserved(GROUP) reserved(BY) ident(scd)operator(.)ident(credittype)
+ reserved(UNION) reserved(ALL)
+ class(SELECT) ident(scd)operator(.)ident(credittype)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(invoiceamount)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod1)operator(,)
+ predefined(Sum)operator(()ident(scd)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod2)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod3)
+ reserved(FROM) ident(studentdebit) reserved(AS) ident(sd)
+ reserved(INNER) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 2 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(1) ident(MONTH)
+ comment(/* PERIOD 2 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(2) ident(MONTH)
+ reserved(LEFT) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd)operator(.)ident(studentdebitid)
+ reserved(WHERE) ident(sd)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(sd)operator(.)ident(status) operator(=) integer(0) comment(/* Normal */)
+ comment(/* Exclude Voided Invoices */)
+ reserved(AND) ident(sd)operator(.)ident(adjustsdebitid) reserved(IS) pre_constant(NULL)
+ reserved(AND) ident(sd)operator(.)ident(studentdebitid) reserved(NOT) ident(IN) operator(()class(SELECT) ident(adjustsdebitid)
+ reserved(FROM) ident(studentdebit)
+ reserved(WHERE) ident(adjustsdebitid) reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(<) predefined(Now)operator(()operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(DATE) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+ reserved(GROUP) reserved(BY) ident(scd)operator(.)ident(credittype)
+ reserved(UNION) reserved(ALL)
+ class(SELECT) ident(scd)operator(.)ident(credittype)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(invoiceamount)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod1)operator(,)
+ string<delimiter(')delimiter(')> reserved(AS) ident(paymentsperiod2)operator(,)
+ predefined(Sum)operator(()ident(scd)operator(.)ident(amount)operator(\)) reserved(AS) ident(paymentsperiod3)
+ reserved(FROM) ident(studentdebit) reserved(AS) ident(sd)
+ reserved(INNER) reserved(JOIN) operator(()class(SELECT) ident(studentcreditdetail)operator(.)ident(studentdebitid)operator(,)
+ ident(studentcreditdetail)operator(.)ident(amount)operator(,)
+ ident(studentcredit)operator(.)pre_type(date)operator(,)
+ ident(credittype)operator(.)ident(credittype)
+ reserved(FROM) ident(studentcreditdetail)
+ reserved(INNER) reserved(JOIN) ident(studentcredit)
+ reserved(ON) ident(studentcreditdetail)operator(.)ident(studentcreditid) operator(=) ident(studentcredit)operator(.)ident(studentcreditid)
+ reserved(AND) ident(studentcredit)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(studentcredit)operator(.)ident(status) operator(=) integer(1) comment(/* Successful */)
+ comment(/* PERIOD 3 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(2) ident(MONTH)
+ comment(/* PERIOD 3 */)
+ reserved(AND) ident(studentcredit)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+ reserved(LEFT) reserved(JOIN) ident(credittype)
+ reserved(USING)operator(()ident(credittypeid)operator(\))operator(\)) reserved(AS) ident(scd)
+ reserved(ON) ident(sd)operator(.)ident(studentdebitid) operator(=) ident(scd)operator(.)ident(studentdebitid)
+ reserved(WHERE) ident(sd)operator(.)ident(obsolete) operator(=) integer(0) comment(/* Not Deleted */)
+ reserved(AND) ident(sd)operator(.)ident(status) operator(=) integer(0) comment(/* Normal */)
+ comment(/* Exclude Voided Invoices */)
+ reserved(AND) ident(sd)operator(.)ident(adjustsdebitid) reserved(IS) pre_constant(NULL)
+ reserved(AND) ident(sd)operator(.)ident(studentdebitid) reserved(NOT) ident(IN) operator(()class(SELECT) ident(adjustsdebitid)
+ reserved(FROM) ident(studentdebit)
+ reserved(WHERE) ident(adjustsdebitid) reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(date) operator(<) predefined(Now)operator(()operator(\))
+ reserved(AND) ident(sd)operator(.)pre_type(date) operator(>) predefined(Now)operator(()operator(\)) operator(-) ident(INTERVAL) integer(3) ident(MONTH)
+ reserved(GROUP) reserved(BY) ident(scd)operator(.)ident(credittype)operator(\)) reserved(AS) ident(ct)
+reserved(GROUP) reserved(BY) ident(ct)operator(.)ident(credittype)
+
+class(SELECT) string<delimiter(')content(mediaid)delimiter(')> reserved(AS) string<delimiter(`)content(idtype)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)> reserved(AS) string<delimiter(`)content(id)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(title)delimiter(`)> reserved(AS) string<delimiter(`)content(title)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(description)delimiter(`)> reserved(AS) string<delimiter(`)content(description)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(source)delimiter(`)> reserved(AS) string<delimiter(`)content(source)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(date)delimiter(`)> reserved(AS) string<delimiter(`)content(startdate)delimiter(`)>operator(,)
+ string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(date)delimiter(`)> reserved(AS) string<delimiter(`)content(enddate)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(class)delimiter(`)> reserved(AS) string<delimiter(`)content(class)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classname)delimiter(`)> reserved(AS) string<delimiter(`)content(classname)delimiter(`)>operator(,)
+ string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(firstname)delimiter(`)> reserved(AS) string<delimiter(`)content(firstname)delimiter(`)>operator(,)
+ string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(lastname)delimiter(`)> reserved(AS) string<delimiter(`)content(lastname)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(description)delimiter(`)> reserved(AS) string<delimiter(`)content(classdesc)delimiter(`)>operator(,)
+ string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)> reserved(AS) string<delimiter(`)content(programid)delimiter(`)>operator(,)
+ reserved(If)operator(()operator(()string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(subprogramof)delimiter(`)> reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))operator(,)string<delimiter(`)content(mp)delimiter(`)>operator(.)string<delimiter(`)content(programname)delimiter(`)>operator(,)
+ string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programname)delimiter(`)>operator(\)) reserved(AS) string<delimiter(`)content(programname)delimiter(`)>operator(,)
+ string<delimiter(')content(Recorded)delimiter(')> reserved(AS) string<delimiter(`)content(longname)delimiter(`)>
+reserved(FROM) operator(()operator(()operator(()operator(()operator(()operator(()operator(()operator(()string<delimiter(`)content(media)delimiter(`)> string<delimiter(`)content(m)delimiter(`)>
+ reserved(JOIN) string<delimiter(`)content(mediaaudience)delimiter(`)> string<delimiter(`)content(ma)delimiter(`)>
+ reserved(ON) operator(()operator(()operator(()string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)> operator(=) string<delimiter(`)content(ma)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)>operator(\))
+ reserved(AND) operator(()string<delimiter(`)content(ma)delimiter(`)>operator(.)string<delimiter(`)content(audiencetype)delimiter(`)> operator(=) string<delimiter(')content(Public)delimiter(')>operator(\))
+ reserved(AND) operator(()operator(()string<delimiter(`)content(ma)delimiter(`)>operator(.)string<delimiter(`)content(enddate)delimiter(`)> operator(<) predefined(Now)operator(()operator(\))operator(\))
+ reserved(OR) ident(Isnull)operator(()string<delimiter(`)content(ma)delimiter(`)>operator(.)string<delimiter(`)content(enddate)delimiter(`)>operator(\))operator(\))operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(mediapresenter)delimiter(`)> string<delimiter(`)content(mpp)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(m)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)> operator(=) string<delimiter(`)content(mpp)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(person)delimiter(`)> string<delimiter(`)content(per)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(mpp)delimiter(`)>operator(.)string<delimiter(`)content(personid)delimiter(`)> operator(=) string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(personid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(mediaaudience)delimiter(`)> string<delimiter(`)content(mad)delimiter(`)>
+ reserved(ON) operator(()operator(()operator(()string<delimiter(`)content(ma)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)> operator(=) string<delimiter(`)content(mad)delimiter(`)>operator(.)string<delimiter(`)content(mediaid)delimiter(`)>operator(\))
+ reserved(AND) operator(()string<delimiter(`)content(mad)delimiter(`)>operator(.)string<delimiter(`)content(audiencetype)delimiter(`)> operator(=) string<delimiter(')content(classid)delimiter(')>operator(\))operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(class)delimiter(`)> string<delimiter(`)content(c)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(mad)delimiter(`)>operator(.)string<delimiter(`)content(audienceid)delimiter(`)> operator(=) string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program_class)delimiter(`)> string<delimiter(`)content(pc)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)> operator(=) string<delimiter(`)content(pc)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program)delimiter(`)> string<delimiter(`)content(p)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(pc)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)> operator(=) string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program)delimiter(`)> string<delimiter(`)content(mp)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(subprogramof)delimiter(`)> operator(=) string<delimiter(`)content(mp)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)>operator(\))operator(\))operator(\))
+reserved(UNION)
+class(SELECT) string<delimiter(')content(sectionid)delimiter(')> reserved(AS) string<delimiter(`)content(idtype)delimiter(`)>operator(,)
+ string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(sectionid)delimiter(`)> reserved(AS) string<delimiter(`)content(id)delimiter(`)>operator(,)
+ string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(title)delimiter(`)> reserved(AS) string<delimiter(`)content(title)delimiter(`)>operator(,)
+ string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(description)delimiter(`)> reserved(AS) string<delimiter(`)content(description)delimiter(`)>operator(,)
+ string<delimiter(`)content(l)delimiter(`)>operator(.)string<delimiter(`)content(mapurl)delimiter(`)> reserved(AS) string<delimiter(`)content(mapurl)delimiter(`)>operator(,)
+ string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(starttime)delimiter(`)> reserved(AS) string<delimiter(`)content(startdate)delimiter(`)>operator(,)
+ string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(endtime)delimiter(`)> reserved(AS) string<delimiter(`)content(enddate)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(class)delimiter(`)> reserved(AS) string<delimiter(`)content(class)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classname)delimiter(`)> reserved(AS) string<delimiter(`)content(classname)delimiter(`)>operator(,)
+ string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(firstname)delimiter(`)> reserved(AS) string<delimiter(`)content(firstname)delimiter(`)>operator(,)
+ string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(lastname)delimiter(`)> reserved(AS) string<delimiter(`)content(lastname)delimiter(`)>operator(,)
+ string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(description)delimiter(`)> reserved(AS) string<delimiter(`)content(classdesc)delimiter(`)>operator(,)
+ string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)> reserved(AS) string<delimiter(`)content(programid)delimiter(`)>operator(,)
+ reserved(If)operator(()operator(()string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(subprogramof)delimiter(`)> reserved(IS) reserved(NOT) pre_constant(NULL)operator(\))operator(,)string<delimiter(`)content(mp)delimiter(`)>operator(.)string<delimiter(`)content(programname)delimiter(`)>operator(,)
+ string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programname)delimiter(`)>operator(\)) reserved(AS) string<delimiter(`)content(programname)delimiter(`)>operator(,)
+ string<delimiter(`)content(d)delimiter(`)>operator(.)string<delimiter(`)content(longname)delimiter(`)> reserved(AS) string<delimiter(`)content(longname)delimiter(`)>
+reserved(FROM) operator(()operator(()operator(()operator(()operator(()operator(()operator(()operator(()string<delimiter(`)content(calendarcache)delimiter(`)> string<delimiter(`)content(cc)delimiter(`)>
+ reserved(JOIN) string<delimiter(`)content(section)delimiter(`)> string<delimiter(`)content(s)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(sectionid)delimiter(`)> operator(=) string<delimiter(`)content(s)delimiter(`)>operator(.)string<delimiter(`)content(sectionid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(person)delimiter(`)> string<delimiter(`)content(per)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(s)delimiter(`)>operator(.)string<delimiter(`)content(teacherid)delimiter(`)> operator(=) string<delimiter(`)content(per)delimiter(`)>operator(.)string<delimiter(`)content(personid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(division)delimiter(`)> string<delimiter(`)content(d)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(s)delimiter(`)>operator(.)string<delimiter(`)content(divisionid)delimiter(`)> operator(=) string<delimiter(`)content(d)delimiter(`)>operator(.)string<delimiter(`)content(divisionid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(location)delimiter(`)> string<delimiter(`)content(l)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(s)delimiter(`)>operator(.)string<delimiter(`)content(locationid)delimiter(`)> operator(=) string<delimiter(`)content(l)delimiter(`)>operator(.)string<delimiter(`)content(locationid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(class)delimiter(`)> string<delimiter(`)content(c)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(s)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)> operator(=) string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program_class)delimiter(`)> string<delimiter(`)content(pc)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(c)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)> operator(=) string<delimiter(`)content(pc)delimiter(`)>operator(.)string<delimiter(`)content(classid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program)delimiter(`)> string<delimiter(`)content(p)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(pc)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)> operator(=) string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)>operator(\))operator(\))operator(\))
+ reserved(LEFT) reserved(JOIN) string<delimiter(`)content(program)delimiter(`)> string<delimiter(`)content(mp)delimiter(`)>
+ reserved(ON) operator(()operator(()string<delimiter(`)content(p)delimiter(`)>operator(.)string<delimiter(`)content(subprogramof)delimiter(`)> operator(=) string<delimiter(`)content(mp)delimiter(`)>operator(.)string<delimiter(`)content(programid)delimiter(`)>operator(\))operator(\))operator(\))
+reserved(WHERE) operator(()reserved(NOT) operator(()operator(()string<delimiter(`)content(cc)delimiter(`)>operator(.)string<delimiter(`)content(description)delimiter(`)> reserved(LIKE) string<delimiter(')content(%{cs}%)delimiter(')>operator(\))operator(\))operator(\)) \ No newline at end of file