package main import ( //"fmt" //"time" //"math" . "git.wecise.com/wecise/odbserver/odb" "git.wecise.com/wecise/odbserver/odb/test" "gitee.com/wecisecode/util/logger" ) // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testtrigger.go // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl // #include "/opt/odbserver/sqlite/sqlite.h" // #include // #include // extern int64_t uhaha_seed; // extern int64_t uhaha_ts; // void uhaha_begin_reader(); // void uhaha_end_reader(); func main() { //options := map[string]interface{} {"cache":odb.CacheAll} //g,err:= odb.New( options ) //option := &StoreOption{Cache:CacheAll} option := &Option{Cache: CacheAll, Keyspace: "ootest", DisableInitialHostLookup: true, DisableTask: true, DisableNotify: true} g, err := test.NewG(option) if err != nil { logger.Error(err.Error()) } else { defer g.Close() } //logger.SetRollingDaily("C:/test/zkcron/src/test", "test.log") logger.SetConsole(true) //logger.SetLevel(logger.DEBUG) // 测试MQL /*rst,meta,err := g.Query(` CREATE TRIGGER test ON /matrix/entity SCHEDULE before INSERT PRIORITY 20 STATUS enable BEGIN print("hello") END `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )*/ /*rst,meta,err := g.Query(` CREATE OR REPLACE TRIGGER test ON /matrix/entity/aix comment '这是注释' ##这是注释 SCHEDULE Every 5 SECOND WHEN name='aix:1' BIND class, id AS myvar PRIORITY 20 GROUP 运维组 STATUS enable begin for _, v in pairs(myvar) do log.info(" class : " .. v.class .. ",id : " .. v.id) end end `, &QueryMeta{Return: ReturnAll} )*/ /*rst,meta,err := g.Query(` CREATE OR REPLACE TRIGGER testupdate2 ON /matrix/entity/aix COMMENT "这是注释" GROUP 运维组 SCHEDULE before UPDATE PRIORITY 20 STATUS enable BEGIN logger.Info("hello update") END`, &QueryMeta{Return: ReturnAll} )*/ /*rst,meta,err := g.Query(` alter trigger testupdate ON /matrix/devops/alerts_status set COMMENT = "这是注释2", priority=30, script=BEGIN logger.Info("hello update0") END `, &QueryMeta{Return: ReturnAll} )*/ /*rst,meta,err := g.Query(` CREATE OR REPLACE TRIGGER test_cron ON /matrix/devops/alerts_status COMMENT "这是注释" GROUP alter_status SCHEDULE every 30 second PRIORITY 20 STATUS enable WHEN severity > 20 BIND id, identifier, domaingroup, manager, node, altergroup, alterkey, type, lastoccurrence AS problems BEGIN local resolution = odb.mql("select node from /matrix/devops/alerts_status") for _, pv in pairs(problems) do for _,rv in pairs(resolution) do log.info(pv.node) end end END`, &QueryMeta{Return: ReturnAll} ) */ //rst,meta,err := g.Query(` alter trigger testupdate ON /matrix/entity/aix set status=enable `, &QueryMeta{Return: ReturnAll} ) //rst,meta,err := g.Query(` drop trigger on /matrix/entity/aix`, &QueryMeta{Return: ReturnAll} ) /*rst,meta,err := g.Query(` create trigger generic_clear on /matrix/devops/alert schedule every 30 second when severity>2 and status = 0 bind id,ip,group,entity,inst,status as problems priority 20 group network status enable begin for _,v in pairs(problems) do local mql = "select id from /matrix/devops/alert where ip = ? and group = ? and entity = ? and inst = ? and status = 0 and severity <=2 " local rec = odb.mql(mql,v.ip,v.group,v.entity,v.inst) if rec ~= nil then odb.mql("update /matrix/devops/alert set status = 12 where id = ?",v.id) end end end`, &QueryMeta{Return: ReturnAll} )*/ //rst,meta,err := g.Query(` drop trigger on group 运维组 `, &QueryMeta{Return: ReturnAll} ) //rst,meta,err := g.Query(` alter trigger on group 运维组 set priority=15, group=hello, status=disable `, &QueryMeta{Return: ReturnAll} ) rst, meta, err := g.Query(` CREATE OR REPLACE TRIGGER test_cron ON /test/alert_status COMMENT "这是注释" GROUP alter_status SCHEDULE every 30 second PRIORITY 20 STATUS enable WHEN severity > 4 BIND id, identifier, domaingroup, manager, node, type, lastoccurrence AS problems BEGIN local resolution = odb.mql("select node from /test/alert_status") for _, pv in pairs(problems) do log.info(pv.node) end END `) //rst,meta,err := g.Query(` DROP TRIGGER test ON /matrix/entity `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) //rst,meta,err := g.Query(` SHOW TRIGGER ON /matrix/entity `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} ) if err != nil { logger.Info("Query error:" + err.Error()) logger.Warn(meta["type"]) } else { logger.Info("rst ===>", rst) //logger.Error("meta ===>", meta) if meta["trace"] != nil && len(meta["trace"].([]string)) > 0 { for _, msg := range meta["trace"].([]string) { logger.Error(msg) } } logger.Warn(meta["columns"]) logger.Warn(meta["params"]) } }