index f1e656982cbb21de211fd850b64e456da68ee84f..a10185469f2397accd253425025dbf9fe097c62c 100644 (file)
{ "LIST;", -1, 1, CONNECTION_LIST },
{ "LIST; INVALID", 5, 1, CONNECTION_LIST },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"host = 'host'", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE NOT "
+ { "LOOKUP hosts MATCHING NOT "
"host = 'host'", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"host =~ 'p' AND "
"service =~ 'p'", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE NOT "
+ { "LOOKUP hosts MATCHING NOT "
"host =~ 'p' AND "
"service =~ 'p'", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"host =~ 'p' AND "
"service =~ 'p' OR "
"service =~ 'r'", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE NOT "
+ { "LOOKUP hosts MATCHING NOT "
"host =~ 'p' AND "
"service =~ 'p' OR "
"service =~ 'r'", -1, 1, CONNECTION_LOOKUP },
+ { "LOOKUP hosts MATCHING "
+ "host =~ 'p' "
+ "FILTER :age > 1D", -1, 1, CONNECTION_LOOKUP },
+ { "LOOKUP hosts MATCHING "
+ "host =~ 'p' "
+ "FILTER :age > 1D AND "
+ ":interval < 240s" , -1, 1, CONNECTION_LOOKUP },
+ { "LOOKUP hosts MATCHING "
+ "host =~ 'p' "
+ "FILTER NOT :age>1D", -1, 1, CONNECTION_LOOKUP },
/* numeric constants */
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"1234", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo != "
"+234", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo < "
"-234", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo > "
"12.4", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo <= "
- "12.", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ "12. + .3", -1, 1, CONNECTION_LOOKUP },
+ { "LOOKUP hosts MATCHING "
"attribute.foo >= "
".4", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"+12e3", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"+12e-3", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"-12e+3", -1, 1, CONNECTION_LOOKUP },
+ /* date, time, interval constants */
+ { "LOOKUP hosts MATCHING "
+ "attribute.foo = "
+ "1 Y 42D", -1, 1, CONNECTION_LOOKUP },
+ { "LOOKUP hosts MATCHING "
+ "attribute.foo = "
+ "1s 42D", -1, 1, CONNECTION_LOOKUP },
+ /*
+ * TODO: Something like 1Y42D should work as well but it doesn't since
+ * the scanner will tokenize it into {digit}{identifier} :-/
+ *
+ { "LOOKUP hosts MATCHING "
+ "attribute.foo = "
+ "1Y42D", -1, 1, CONNECTION_LOOKUP },
+ */
+
/* NULL */
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo "
"IS NULL", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo "
"IS NOT NULL", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"NOT attribute.foo "
"IS NULL", -1, 1, CONNECTION_LOOKUP },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"host IS NULL", -1, -1, 0 },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"service IS NULL", -1, -1, 0 },
/* invalid numeric constants */
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"+-12e+3", -1, -1, 0 },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"-12e-+3", -1, -1, 0 },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"e+3", -1, -1, 0 },
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"3e", -1, -1, 0 },
/* following SQL standard, we don't support hex numbers */
- { "LOOKUP hosts WHERE "
+ { "LOOKUP hosts MATCHING "
"attribute.foo = "
"0x12", -1, -1, 0 },
+ /* invalid expressions */
+ { "LOOKUP hosts MATCHING "
+ "attribute.foo = "
+ "1.23 + 'foo'", -1, -1, 0 },
+
/* comments */
{ "/* some comment */", -1, 0, 0 },
{ "-- another comment", -1, 0, 0 },
{ "/* some incomplete", -1, -1, 0 },
{ "LOOKUP hosts", -1, -1, 0 },
- { "LOOKUP foo WHERE "
+ { "LOOKUP foo MATCHING "
"host = 'host'", -1, -1, 0 },
};
{ "attribute.foo IS NULL", -1, MATCHER_ISNULL },
{ "attribute.foo IS NOT NULL", -1, MATCHER_NOT },
+ /* object field matchers */
+ { ":last_update < 10s", -1, MATCHER_LT },
+ { ":AGE <= 1m", -1, MATCHER_LE },
+ { ":interval = 10h", -1, MATCHER_EQ },
+ { ":Last_Update >= 24D", -1, MATCHER_GE },
+ { ":age > 1M", -1, MATCHER_GT },
+ { ":age != 20Y", -1, MATCHER_NOT },
+ { ":backend != 'be'", -1, MATCHER_NOT },
+
/* check operator precedence */
{ "host = 'name' OR "
"service = 'name' AND "