testquery.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. package main
  2. import (
  3. //"fmt"
  4. //"time"
  5. . "git.wecise.com/wecise/odbserver/odb"
  6. "git.wecise.com/wecise/odbserver/odb/query"
  7. "git.wecise.com/wecise/odbserver/odb/test"
  8. "gitee.com/wecisecode/util/logger"
  9. //"github.com/chrusty/go-tableprinter"
  10. )
  11. // CGO_ENABLED=1 go run --ldflags '-linkmode external -extldflags "-static"' testquery.go
  12. // #cgo LDFLAGS: -L/opt/odbserver/sqlite -lsqlite -ldl
  13. // #include "/opt/odbserver/sqlite/sqlite.h"
  14. // #include <stdint.h>
  15. // #include <stdlib.h>
  16. // extern int64_t uhaha_seed;
  17. // extern int64_t uhaha_ts;
  18. // void uhaha_begin_reader();
  19. // void uhaha_end_reader();
  20. func main() {
  21. //options := map[string]interface{} {"cache":odb.CacheAll}
  22. //g,err:= odb.New( options )
  23. //option := &StoreOption{Cache:CacheAll}
  24. option := &Option{Cache: CacheAll, Keyspace: "matrix", DisableInitialHostLookup: true, DisableNotify: true}
  25. g, err := test.NewG(option)
  26. if err != nil {
  27. logger.Error(err.Error())
  28. } else {
  29. defer g.Close()
  30. }
  31. //logger.SetRollingDaily("C:/test/zkcron/src/test", "test.log")
  32. logger.SetConsole(true)
  33. //logger.SetLevel(logger.DEBUG)
  34. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain,depend*1]->()`)
  35. //rst,meta,err := g.Query(`match (m:"biz:查账系统")-[*]->(p:"linux:linux[1-5]")-[*]->(q:"esx:esx4") return status path m,p,q detail`)
  36. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`)
  37. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`)
  38. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`)
  39. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  40. //bug
  41. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  42. //bug
  43. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("linux:*")-[*1]->("esx:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  44. //bug !!!
  45. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  46. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  47. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*","linux:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  48. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() until "linux:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  49. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  50. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() back '2019-05-26'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  51. //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" back '2019-05-28 22:00:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  52. //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" diff '2019-05-28 14:30:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  53. //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where strp like 'strst*' * ]->() return name,status,.*`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  54. //rst,meta,err := g.Query(`match ("biz:B查账系统")-[:contain]->("cluster:B查账系统web集群")-[*]->() until "switch:*" diff '2019-05-28 14:33:00'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  55. //rst,meta,err := g.Query(`match ("vm:*")-[*]->(:/matrix/entity/host where name='host:21e7aac1a44c4f0f961730fe68a709ab') return name`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  56. //rst,meta,err := g.Query(`match ("vm:*")-[*]->() return name with timeout=20`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  57. //rst,meta,err := g.Query(`match ("ha:认证系统数据库HA","ha:认证系统应用服务集群","ha:查账系统数据库HA","ha:B认证系统数据库HA","ha:B认证系统应用服务集群","ha:B查账系统数据库HA","123","222222","测试资源节点","test4530","zy-vmware","裸金属服务器","青海","vmware_wfang","sanstorage:sanstorage1","sanstorage:Bsanstorage1","weblogic:weblogic5","weblogic:weblogic4","weblogic:weblogic3","weblogic:weblogic2","weblogic:weblogic1","weblogic:Bweblogic5","weblogic:Bweblogic4","weblogic:Bweblogic3","weblogic:Bweblogic2","weblogic:Bweblogic1","esx:esx5","esx:esx4","esx:esx3","esx:esx2","esx:esx1","esx:Besx5","esx:Besx4","esx:Besx3","esx:Besx2","esx:Besx1","http:查账http4","http:查账http3","http:查账http2","http:查账http1","http:B查账http4","http:B查账http3","http:B查账http2","http:B查账http1","router:router4","router:router3","router:router2","router:router1","router:Brouter4","router:Brouter3") - [*1] -> ("ha:认证系统数据库HA","ha:认证系统应用服务集群","ha:查账系统数据库HA","ha:B认证系统数据库HA","ha:B认证系统应用服务集群","ha:B查账系统数据库HA","123","222222","测试资源节点","test4530","zy-vmware","裸金属服务器","青海","vmware_wfang","sanstorage:sanstorage1","sanstorage:Bsanstorage1","weblogic:weblogic5","weblogic:weblogic4","weblogic:weblogic3","weblogic:weblogic2","weblogic:weblogic1","weblogic:Bweblogic5","weblogic:Bweblogic4","weblogic:Bweblogic3","weblogic:Bweblogic2","weblogic:Bweblogic1","esx:esx5","esx:esx4","esx:esx3","esx:esx2","esx:esx1","esx:Besx5","esx:Besx4","esx:Besx3","esx:Besx2","esx:Besx1","http:查账http4","http:查账http3","http:查账http2","http:查账http1","http:B查账http4","http:B查账http3","http:B查账http2","http:B查账http1","router:router4","router:router3","router:router2","router:router1","router:Brouter4","router:Brouter3")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  58. //bug
  59. //rst,meta,err := g.Query(`match (m:"biz:查账系统")-[*]->(p:"linux:linux[1-5]")-[*]->(q:"esx:esx4") return status path m,p,q`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  60. //bug
  61. //rst,meta,err := g.Query(`select host,ip from /matrix/devops/event/omnibus o join ("esx:aaa")-[:connect*]->(h:switch) on o.entity = h.id where o.severity=5`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  62. //bug
  63. //rst,meta,err := g.Query(`select host,ip from /matrix/devops/event/omnibus o join ("esx:bbb")-[:connect*]->(h:switch) on o.entity = h.id where o.severity=5`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  64. //bug
  65. //rst,meta,err := g.Query(`match ("biz:查账系统111")-[*]->("esx:*")-[:connect*]->(h:switch) `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  66. // bug
  67. //rst,meta,err := g.Query(`select s.id,s.name,q.id as qid, q.name as qname from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  68. //rst,meta,err := g.Query(`select q.id, q.name from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  69. //bug
  70. //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  71. //rst,meta,err := g.Query(`match ('esx:esx*')-[*]->()<-[*]-("switch:*") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  72. //bug
  73. //rst,meta,err := g.Query(`match("firewall:277966")-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  74. //bug
  75. //rst,meta,err := g.Query(` match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  76. //
  77. //bug
  78. //rst,meta,err := g.Query(`match ('server:*')-[*1]->("vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*','volume:*')<-[*]-('project:*','vstorage:*') `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  79. //nug
  80. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  81. //bug
  82. //rst,meta,err := g.Query(`match (b:biz)-[*]->(e:esx)-[*1]->(s:switch) return name,status path b,e,s`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  83. //bug
  84. //rst,meta,err := g.Query(`match ("biz:数字国网")-[:contain where intp =1 and floatp > 3 *]->() return contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  85. //rst,meta,err := g.Query(`match ('server:*')-[*1]->(v:vm)-[*1]->('vnic:*')<-[*]-('project:0f11be29059d4681a5c33f6project01'),(v)-[*1]->(p:volume),('vstorage:*')-[*1]->(p)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  86. //rst,meta,err := g.Query(`match (a:"biz:查账系统")-[*]->("linux:*")-[*1]->("esx:esx4") add "tag5" in a remove ("tag333") in a`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  87. //rst,meta,err := g.Query(`match (a:"biz:查账系统")-[*1]->("biz:认证系统") in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  88. //rst,meta,err := g.Query(`match ()-->() in "tag99"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  89. //rst,meta,err := g.Query(`create ("biz:数字国网")-[:contain]->("app:test1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  90. //rst,meta,err := g.Query(`match ('biz:数字国网') - [*2] -> () diff '2020-02-14 13:02'`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  91. //rst,meta,err := g.Query(` match (s:'server:*')-[*1]->(v:"vm:project01cd94540b7aaeda266cavm01")-[*1]->('vnic:*')<-[*]-('project:*'),(v1:"vm:*")-[*1]->('volume:*')<-[*1]-('vstorage:*')<-[*1]-(s) in "project1" `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  92. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  93. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("ha:查账系统数据库HA") union ("biz:查账系统")-[*]->("cluster:查账系统应用服务集群")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  94. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->() union ()-[*1]->("biz:查账系统")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  95. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:connect where year=2020]->("linux:wecise") return connect`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  96. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*1]->("cluster:查账系统应用服务集群")<-[*1]-("app:app3")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  97. //rst,meta,err := g.Query(`match (:alert where group='biz-status-slow')-[:refer*1]->("biz:*")-[*1]->(:app)<-[:refer*1]-(:alert where group='app-service-down')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  98. //rst,meta,err := g.Query(` match (p1:"partitiontest1:test2")-[*1]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  99. //rst,meta,err := g.Query(` match ('celltype:1114215')-[*]->() with sep="#" `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  100. //rst,meta,err := g.Query(` create ("interface:RWU9451-900440-1_X2")-[:connect]->("interface:RWU9451-900439-1_X2") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  101. //rst,meta,err := g.Query(`match ("node:RWU9451-900439-1")-[*]->() with inline`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  102. //rst,meta,err := g.Query(`match ("app:18695220567") <-[:callto*1]-(:/matrix/entity/biz where vtime>"2020-06-01 12:30:00" and vtime< "2020-07-10 12:30:00")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  103. //rst,meta,err := g.Query(`match ("esx:esx1") <- [:connect*1] -(:switch where name='switch:switch1') with group=10`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  104. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status with group=10`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  105. //rst,meta,err := g.Query(`match ()-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  106. //rst,meta,err := g.Query(`match ("node:RZG9247-900680-1" )<-[*1]-(:/matrix/entity/interface)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  107. //rst,meta,err := g.Query(`match ("node:*" )<-[*1]-(:/matrix/entity/interface where id='interface:RZG9247-900680-1_X2#node:RZG9247-900680-1')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  108. //rst,meta,err := g.Query(`match (:biz where name='查账系统')-[*1]->("biz:*")-[*]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  109. //rst,meta,err := g.Query(`match (:biz where name='查账系统')-[*1]->("biz:*")-[*]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  110. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->("ha:查账系统数据库HA")-[*]->("esx:*","linux:*")-[*1]->('switch:*') until "sanswitch:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  111. //rst,meta,err := g.Query(`match ("perbasisinfo:320911197112273412")<-[:belong:yongy*2]-(p:phonenumber), (p)<-[:callto:bycall*1]-(h:/matrix/action/calllog where starttimestr>='2020-03-01' and starttimestr<='2020-03-30' limit 50), (h)-[:callto:bycall*1]->(:phonenumber)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  112. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:^contain*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  113. //rst,meta,err := g.Query(`match('node:RWU9462-900774-1') -[*1]-() with inline`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  114. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") with attr=(name,status)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  115. //rst,meta,err := g.Query(`match (x:"biz:查账系统")-[*]->(y) return x.name, y.name`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  116. //rst,meta,err := g.Query(`match (b:"biz:*")-[*]->(e:"esx:*")-[*1]->(s:"switch:*") with attr=(name,status) short path b,e,s`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  117. //rst,meta,err := g.Query(`match ("biz:*")-[*]->(a) return a.id, a.name`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  118. //rst,meta,err := g.Query(`match ('biz:*')-[*10]->()`, &QueryMeta{Return: ReturnAll} )
  119. //rst, meta, err := g.Query(`match ("node:10.1.1.230*") - [*] -> ("node:10.1.1.71") with attr=(name,connect.*) `, &query.QueryMeta{Return: query.ReturnAll})
  120. //rst, meta, err := g.Query(`match(:MillingCuttingTool)-[*]-(:TwistDrill)`, &query.QueryMeta{Return: query.ReturnAll})
  121. rst, meta, err := g.Query(`match ("biz:查账系统")-[*]->(a) return a.id`, &query.QueryMeta{Return: query.ReturnAll})
  122. //rst, meta, err := g.Query(`match("MillingCuttingTool:1130881594777665536")-[*1]-("TwistDrill:1130881594777665537")`, &query.QueryMeta{Return: query.ReturnAll})
  123. //rst,meta,err := g.Query(`match ("esx:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll} )
  124. //rst,meta,err := g.Query(`match('node:DFD9247-940013-1','node:DFD9255-940106-1','node:DFD9256-940169-1','node:DFD9256-940170-1','node:DFD9259-940040-1','node:DFD9259-940051-1','node:DFD9259-940060-1','node:DFD9266-940309-1','node:DFD9272-940400-1','node:DHG9249-940259-1','node:DHG9250-940137-1','node:DHG9251-940241-1','node:DHG9260-940368-1','node:DLU9246-940188-1','node:DUG9249-940433-1','node:EDE9246-950145-1','node:EDE9246-950150-1','node:EQD9247-950561-1','node:EYD910221278-1','node:EYD920950473-1','node:EYD920950475-1','node:EYD9247-221008-1','node:EYD9247-221016-1','node:EYD9247-221017-1','node:EYD9247-221029-1','node:EYD9247-965001-1','node:EYD9254-965008-1','node:EYD9255-965009-1','node:EYD9257-950140-1','node:EYD9258-950205-1','node:EYD9259-950166-1','node:EYD9259-950171-1','node:EYD9259-950179-1','node:EYD9259-950181-1','node:EYD9260-950239-1','node:EYD9262-950123-1','node:EYD9263-965017-1','node:EYD9264-965018-1','node:EYD9270-950299-1','node:EYD9273-950340-1','node:EYD9279-965033-1','node:EYD9312-965066-1','node:EYD9315-950534-1','node:EYD9332-950440-1','node:EYD9334-950488-1','node:EYD9334-950510-1','node:EYD9345-950461-1','node:EYD9351-950473-1','node:EYL9246-221094-1','node:EYL9246-221097-1','node:EYL9246-221098-1','node:REI9246-900486-1','node:REI9246-900493-1','node:REY9246-900558-1','node:REY9247-900355-1','node:ROR9247-900670-1','node:RRW9247-900562-1','node:RRW9248-900578-1','node:RSE9246-900746-1','node:RVF9248-900326-1','node:RVF9249-900336-1','node:RVF9253-900808-1','node:RVF9253-900821-1','node:RVF9255-900891-1','node:RVF9255-900898-1','node:RVF9255-900900-1','node:RVF9255-900902-1','node:RVF9255-900920-1','node:RVF9256-900939-1','node:RVF9258-900978-1','node:RVF9259-900991-1','node:RVF9259-901003-1','node:RVF9260-901023-1','node:RWU0908L-2210-1','node:RWU9435-900255-1','node:RWU9439-900283-1','node:RWU9439-900289-1','node:RWU9439-900293-1','node:RWU9439-900296-1','node:RWU9444-900386-1','node:RWU9451-900438-1','node:RWU9451-900442-1','node:RWU9452-900451-1','node:RWU9455-900617-1','node:RWU9459-900705-1','node:RWU9459-900713-1','node:RWU9459-900714-1','node:RWU9460-900730-1','node:RWU9460-900734-1','node:RWU9462-900789-1','node:RWU9462-900792-1','node:RWU9462-900794-1','node:RWU9463-900836-1','node:RWU9463-900839-1','node:RWU9465-901046-1','node:RWU9470-901147-1','node:RWU9471-901160-1','node:RWU9471-901168-1','node:RWU9516-901272-1','node:RZG9247-900684-1') -[*3]->('node:DFD9247-940013-1','node:DFD9255-940106-1','node:DFD9256-940169-1','node:DFD9256-940170-1','node:DFD9259-940040-1','node:DFD9259-940051-1','node:DFD9259-940060-1','node:DFD9266-940309-1','node:DFD9272-940400-1','node:DHG9249-940259-1','node:DHG9250-940137-1','node:DHG9251-940241-1','node:DHG9260-940368-1','node:DLU9246-940188-1','node:DUG9249-940433-1','node:EDE9246-950145-1','node:EDE9246-950150-1','node:EQD9247-950561-1','node:EYD910221278-1','node:EYD920950473-1','node:EYD920950475-1','node:EYD9247-221008-1','node:EYD9247-221016-1','node:EYD9247-221017-1','node:EYD9247-221029-1','node:EYD9247-965001-1','node:EYD9254-965008-1','node:EYD9255-965009-1','node:EYD9257-950140-1','node:EYD9258-950205-1','node:EYD9259-950166-1','node:EYD9259-950171-1','node:EYD9259-950179-1','node:EYD9259-950181-1','node:EYD9260-950239-1','node:EYD9262-950123-1','node:EYD9263-965017-1','node:EYD9264-965018-1','node:EYD9270-950299-1','node:EYD9273-950340-1','node:EYD9279-965033-1','node:EYD9312-965066-1','node:EYD9315-950534-1','node:EYD9332-950440-1','node:EYD9334-950488-1','node:EYD9334-950510-1','node:EYD9345-950461-1','node:EYD9351-950473-1','node:EYL9246-221094-1','node:EYL9246-221097-1','node:EYL9246-221098-1','node:REI9246-900486-1','node:REI9246-900493-1','node:REY9246-900558-1','node:REY9247-900355-1','node:ROR9247-900670-1','node:RRW9247-900562-1','node:RRW9248-900578-1','node:RSE9246-900746-1','node:RVF9248-900326-1','node:RVF9249-900336-1','node:RVF9253-900808-1','node:RVF9253-900821-1','node:RVF9255-900891-1','node:RVF9255-900898-1','node:RVF9255-900900-1','node:RVF9255-900902-1','node:RVF9255-900920-1','node:RVF9256-900939-1','node:RVF9258-900978-1','node:RVF9259-900991-1','node:RVF9259-901003-1','node:RVF9260-901023-1','node:RWU0908L-2210-1','node:RWU9435-900255-1','node:RWU9439-900283-1','node:RWU9439-900289-1','node:RWU9439-900293-1','node:RWU9439-900296-1','node:RWU9444-900386-1','node:RWU9451-900438-1','node:RWU9451-900442-1','node:RWU9452-900451-1','node:RWU9455-900617-1','node:RWU9459-900705-1','node:RWU9459-900713-1','node:RWU9459-900714-1','node:RWU9460-900730-1','node:RWU9460-900734-1','node:RWU9462-900789-1','node:RWU9462-900792-1','node:RWU9462-900794-1','node:RWU9463-900836-1','node:RWU9463-900839-1','node:RWU9465-901046-1','node:RWU9470-901147-1','node:RWU9471-901160-1','node:RWU9471-901168-1','node:RWU9516-901272-1','node:RZG9247-900684-1') with inline`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  125. //rst,meta,err := g.Query(`match('node:DFD9247-940013-1','node:DFD9255-940106-1') -[*1]-() with inline`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  126. //rst,meta,err := g.Query(` match ("calllog:955992020-03-29 16:16:31","calllog:955992020-03-29 16:05:23","calllog:955992020-03-29 12:30:41","calllog:955992020-03-29 12:25:50", "calllog:955992020-03-29 12:21:59")-[:callto:bycall*1]->(:phonenumber)`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  127. //rst,meta,err := g.Query(` match (:phonenumber)<-[:callto:bycall*1]-("calllog:955992020-03-29 16:16:31","calllog:955992020-03-29 16:05:23","calllog:955992020-03-29 12:30:41","calllog:955992020-03-29 12:25:50", "calllog:955992020-03-29 12:21:59")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  128. //rst,meta,err := g.Query(`match (:perbasisinfo) <- [:belong:yongy*2] - (p:'phonenumber:15005107680','phonenumber:10655045000010068625','phonenumber:15008669972') <- [*1] - (:/matrix/action/calllog where starttimestr>='2020-03-01' and starttimestr <='2020-03-30') with timeout=30`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  129. //rst,meta,err := g.Query(` match ('node:RWU9451-900440-1')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  130. //rst,meta,err := g.Query(` match ('celltype:1114215#1313672')-[*]->() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  131. //rst,meta,err := g.Query(` match ("biz:查账系统")-[*]->("esx:esx1") `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  132. //rst,meta,err := g.Query(`select entity,msg,host,i.id,i.name,p.param,p.value from /matrix/devops/event/ e join (i:/matrix/entity/switch where id='switch:switch1' or name='switch:switch2') on e.entity=i.id and e.entity=i.name join (p:/matrix/devops/performance/ where entity like 'switch:*' and value>30) on e.entity=p.entity where entity like 'switch:*' `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  133. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain*1]->()-[*]->("esx:*")-[*1]->('switch:*')`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  134. //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  135. //bug
  136. //rst,meta,err := g.Query(`match ("esx:esx1")<-[*]-() `, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  137. //rst,meta,err := g.Query(`match (mysql:demodb)<-[*]-()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  138. // is right
  139. //select id, name from /matrix/entity/switch s join (p:switch where id='switch:switch1')-[*1]->(q) on s.id = p.id
  140. //rst,meta,err := g.Query(`match ("biz:数字国网")-[*]->() return name,status,contain.intp`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  141. // bug
  142. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:contain]-("cluster:查账系统web集群")-[*]-() until "switch:*"`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  143. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->() return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  144. //rst,meta,err := g.Query(`match ("biz:查账系统")-[:refer*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  145. //rst,meta,err := g.Query(`match ("biz:认证系统")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  146. //rst,meta,err := g.Query(`match ("9788404371073416132")-[*1]->()`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  147. //bug
  148. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:linux[1-5]")-[*1]->("esx:esx1")`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  149. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("esx:esx1") return name,status`, &QueryMeta{Return: ReturnAll, MinAsteriskField: false, KeepClassID: false} )
  150. //rst,meta,err := g.Query(`match ("biz:查账系统")-[*]->("linux:*")-[*1]->("esx:*")`)
  151. //rst,meta,err := g.Query(`match (p:"linux:linux[1-5]")-[*]->(q:"esx:esx4")`)
  152. if err != nil {
  153. logger.Info("Query error:" + err.Error())
  154. logger.Warn(meta["type"])
  155. } else {
  156. logger.Info("rst ===>", rst)
  157. //tableprinter.Print(rst[0])
  158. //logger.Error("meta ===>", meta)
  159. if meta["trace"] != nil && len(meta["trace"].([]string)) > 0 {
  160. for _, msg := range meta["trace"].([]string) {
  161. logger.Error(msg)
  162. }
  163. }
  164. logger.Warn(meta["columns"])
  165. }
  166. //time.Sleep(time.Duration(1)*time.Second)
  167. }