range.pt 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. # test that our range types' binary functions have the same implementation/results as PG
  2. send
  3. Parse {"query": "CREATE TABLE int4range_values (a int4range)"}
  4. Bind
  5. Execute
  6. Parse {"query": "INSERT INTO int4range_values VALUES ('[,1)'), ('[,1]'), ('[,)'), ('[,]'), ('(,1)'), ('(,1]'), ('(,)'), ('(,]'), ('[-1,1)'), ('[-1,1]'), ('(-1,1)'), ('(-1,1]'), ('[0,0)'), ('[0,0]'), ('(0,0)'), ('(0,0]'), ('[1,)'), ('[1,]'), ('(1,)'), ('(1,]')"}
  7. Bind
  8. Execute
  9. Parse {"query": "CREATE TABLE int4range_test_values (v int4range)"}
  10. Bind
  11. Execute
  12. Parse {"query": "INSERT INTO int4range_test_values VALUES ('empty'), ('(,)'), ('(,1)'), ('(-1,)'), ('[-1,1)'), ('[-99,-50)'), ('[50,99)')"}
  13. Bind
  14. Execute
  15. Parse {"query": "CREATE TABLE numrange_values (a numrange)"}
  16. Bind
  17. Execute
  18. Parse {"query": "INSERT INTO numrange_values VALUES ('[,1)'), ('[,1]'), ('[,)'), ('[,]'), ('(,1)'), ('(,1]'), ('(,)'), ('(,]'), ('[-1,1)'), ('[-1,1]'), ('(-1,1)'), ('(-1,1]'), ('[0,0)'), ('[0,0]'), ('(0,0)'), ('(0,0]'), ('[1,)'), ('[1,]'), ('(1,)'), ('(1,]')"}
  19. Bind
  20. Execute
  21. Parse {"query": "CREATE TABLE numrange_test_values (v numrange)"}
  22. Bind
  23. Execute
  24. Parse {"query": "INSERT INTO numrange_test_values VALUES ('empty'), ('(,)'), ('(,1)'), ('(-1,)'), ('[-1,1)'), ('[-99,-50)'), ('[50,99)')"}
  25. Bind
  26. Execute
  27. Sync
  28. ----
  29. until
  30. ReadyForQuery
  31. ----
  32. ParseComplete
  33. BindComplete
  34. CommandComplete {"tag":"CREATE TABLE"}
  35. ParseComplete
  36. BindComplete
  37. CommandComplete {"tag":"INSERT 0 20"}
  38. ParseComplete
  39. BindComplete
  40. CommandComplete {"tag":"CREATE TABLE"}
  41. ParseComplete
  42. BindComplete
  43. CommandComplete {"tag":"INSERT 0 7"}
  44. ParseComplete
  45. BindComplete
  46. CommandComplete {"tag":"CREATE TABLE"}
  47. ParseComplete
  48. BindComplete
  49. CommandComplete {"tag":"INSERT 0 20"}
  50. ParseComplete
  51. BindComplete
  52. CommandComplete {"tag":"CREATE TABLE"}
  53. ParseComplete
  54. BindComplete
  55. CommandComplete {"tag":"INSERT 0 7"}
  56. ReadyForQuery {"status":"I"}
  57. send
  58. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL) int4range_values(a), int4range_test_values WHERE a @> v GROUP BY a ORDER BY a;"}
  59. Bind
  60. Execute
  61. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a <@ v GROUP BY a ORDER BY a;"}
  62. Bind
  63. Execute
  64. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a && v GROUP BY a ORDER BY a;"}
  65. Bind
  66. Execute
  67. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a << v GROUP BY a ORDER BY a;"}
  68. Bind
  69. Execute
  70. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a >> v GROUP BY a ORDER BY a;"}
  71. Bind
  72. Execute
  73. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a &< v GROUP BY a ORDER BY a;"}
  74. Bind
  75. Execute
  76. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a &> v GROUP BY a ORDER BY a;"}
  77. Bind
  78. Execute
  79. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM int4range_values WHERE a IS NOT NULL ) int4range_values(a), int4range_test_values WHERE a -|- v GROUP BY a ORDER BY a;"}
  80. Bind
  81. Execute
  82. Parse {"query": "SELECT DISTINCT l.v, r.v, l.v < r.v, l.v <= r.v, l.v > r.v, l.v >= r.v, l.v = r.v, l.v <> r.v FROM int4range_test_values AS l, int4range_test_values AS r ORDER BY 1, 2;"}
  83. Bind
  84. Execute
  85. Sync
  86. ----
  87. until
  88. ReadyForQuery
  89. ----
  90. ParseComplete
  91. BindComplete
  92. DataRow {"fields":["empty","{empty}"]}
  93. DataRow {"fields":["(,1)","{empty,\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  94. DataRow {"fields":["(,2)","{empty,\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  95. DataRow {"fields":["(,)","{empty,\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  96. DataRow {"fields":["[-1,1)","{empty,\"[-1,1)\"}"]}
  97. DataRow {"fields":["[-1,2)","{empty,\"[-1,1)\"}"]}
  98. DataRow {"fields":["[0,1)","{empty}"]}
  99. DataRow {"fields":["[0,2)","{empty}"]}
  100. DataRow {"fields":["[1,)","{empty,\"[50,99)\"}"]}
  101. DataRow {"fields":["[2,)","{empty,\"[50,99)\"}"]}
  102. CommandComplete {"tag":"SELECT 10"}
  103. ParseComplete
  104. BindComplete
  105. DataRow {"fields":["empty","{empty,\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  106. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\"}"]}
  107. DataRow {"fields":["(,2)","{\"(,)\"}"]}
  108. DataRow {"fields":["(,)","{\"(,)\"}"]}
  109. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\"}"]}
  110. DataRow {"fields":["[-1,2)","{\"(,)\"}"]}
  111. DataRow {"fields":["[0,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\"}"]}
  112. DataRow {"fields":["[0,2)","{\"(,)\",\"[0,)\"}"]}
  113. DataRow {"fields":["[1,)","{\"(,)\",\"[0,)\"}"]}
  114. DataRow {"fields":["[2,)","{\"(,)\",\"[0,)\"}"]}
  115. CommandComplete {"tag":"SELECT 10"}
  116. ParseComplete
  117. BindComplete
  118. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  119. DataRow {"fields":["(,2)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  120. DataRow {"fields":["(,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  121. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\"}"]}
  122. DataRow {"fields":["[-1,2)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\"}"]}
  123. DataRow {"fields":["[0,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\"}"]}
  124. DataRow {"fields":["[0,2)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\"}"]}
  125. DataRow {"fields":["[1,)","{\"(,)\",\"[0,)\",\"[50,99)\"}"]}
  126. DataRow {"fields":["[2,)","{\"(,)\",\"[0,)\",\"[50,99)\"}"]}
  127. CommandComplete {"tag":"SELECT 9"}
  128. ParseComplete
  129. BindComplete
  130. DataRow {"fields":["(,1)","{\"[50,99)\"}"]}
  131. DataRow {"fields":["(,2)","{\"[50,99)\"}"]}
  132. DataRow {"fields":["[-1,1)","{\"[50,99)\"}"]}
  133. DataRow {"fields":["[-1,2)","{\"[50,99)\"}"]}
  134. DataRow {"fields":["[0,1)","{\"[50,99)\"}"]}
  135. DataRow {"fields":["[0,2)","{\"[50,99)\"}"]}
  136. CommandComplete {"tag":"SELECT 6"}
  137. ParseComplete
  138. BindComplete
  139. DataRow {"fields":["[-1,1)","{\"[-99,-50)\"}"]}
  140. DataRow {"fields":["[-1,2)","{\"[-99,-50)\"}"]}
  141. DataRow {"fields":["[0,1)","{\"[-99,-50)\"}"]}
  142. DataRow {"fields":["[0,2)","{\"[-99,-50)\"}"]}
  143. DataRow {"fields":["[1,)","{\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  144. DataRow {"fields":["[2,)","{\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  145. CommandComplete {"tag":"SELECT 6"}
  146. ParseComplete
  147. BindComplete
  148. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  149. DataRow {"fields":["(,2)","{\"(,)\",\"[0,)\",\"[50,99)\"}"]}
  150. DataRow {"fields":["(,)","{\"(,)\",\"[0,)\"}"]}
  151. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  152. DataRow {"fields":["[-1,2)","{\"(,)\",\"[0,)\",\"[50,99)\"}"]}
  153. DataRow {"fields":["[0,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"[0,)\",\"[50,99)\"}"]}
  154. DataRow {"fields":["[0,2)","{\"(,)\",\"[0,)\",\"[50,99)\"}"]}
  155. DataRow {"fields":["[1,)","{\"(,)\",\"[0,)\"}"]}
  156. DataRow {"fields":["[2,)","{\"(,)\",\"[0,)\"}"]}
  157. CommandComplete {"tag":"SELECT 9"}
  158. ParseComplete
  159. BindComplete
  160. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\"}"]}
  161. DataRow {"fields":["(,2)","{\"(,1)\",\"(,)\"}"]}
  162. DataRow {"fields":["(,)","{\"(,1)\",\"(,)\"}"]}
  163. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  164. DataRow {"fields":["[-1,2)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  165. DataRow {"fields":["[0,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  166. DataRow {"fields":["[0,2)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  167. DataRow {"fields":["[1,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  168. DataRow {"fields":["[2,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"[0,)\"}"]}
  169. CommandComplete {"tag":"SELECT 9"}
  170. ParseComplete
  171. BindComplete
  172. DataRow {"fields":["[1,)","{\"(,1)\",\"[-1,1)\"}"]}
  173. CommandComplete {"tag":"SELECT 1"}
  174. ParseComplete
  175. BindComplete
  176. DataRow {"fields":["empty","empty","f","t","f","t","t","f"]}
  177. DataRow {"fields":["empty","(,1)","t","t","f","f","f","t"]}
  178. DataRow {"fields":["empty","(,)","t","t","f","f","f","t"]}
  179. DataRow {"fields":["empty","[-99,-50)","t","t","f","f","f","t"]}
  180. DataRow {"fields":["empty","[-1,1)","t","t","f","f","f","t"]}
  181. DataRow {"fields":["empty","[0,)","t","t","f","f","f","t"]}
  182. DataRow {"fields":["empty","[50,99)","t","t","f","f","f","t"]}
  183. DataRow {"fields":["(,1)","empty","f","f","t","t","f","t"]}
  184. DataRow {"fields":["(,1)","(,1)","f","t","f","t","t","f"]}
  185. DataRow {"fields":["(,1)","(,)","t","t","f","f","f","t"]}
  186. DataRow {"fields":["(,1)","[-99,-50)","t","t","f","f","f","t"]}
  187. DataRow {"fields":["(,1)","[-1,1)","t","t","f","f","f","t"]}
  188. DataRow {"fields":["(,1)","[0,)","t","t","f","f","f","t"]}
  189. DataRow {"fields":["(,1)","[50,99)","t","t","f","f","f","t"]}
  190. DataRow {"fields":["(,)","empty","f","f","t","t","f","t"]}
  191. DataRow {"fields":["(,)","(,1)","f","f","t","t","f","t"]}
  192. DataRow {"fields":["(,)","(,)","f","t","f","t","t","f"]}
  193. DataRow {"fields":["(,)","[-99,-50)","t","t","f","f","f","t"]}
  194. DataRow {"fields":["(,)","[-1,1)","t","t","f","f","f","t"]}
  195. DataRow {"fields":["(,)","[0,)","t","t","f","f","f","t"]}
  196. DataRow {"fields":["(,)","[50,99)","t","t","f","f","f","t"]}
  197. DataRow {"fields":["[-99,-50)","empty","f","f","t","t","f","t"]}
  198. DataRow {"fields":["[-99,-50)","(,1)","f","f","t","t","f","t"]}
  199. DataRow {"fields":["[-99,-50)","(,)","f","f","t","t","f","t"]}
  200. DataRow {"fields":["[-99,-50)","[-99,-50)","f","t","f","t","t","f"]}
  201. DataRow {"fields":["[-99,-50)","[-1,1)","t","t","f","f","f","t"]}
  202. DataRow {"fields":["[-99,-50)","[0,)","t","t","f","f","f","t"]}
  203. DataRow {"fields":["[-99,-50)","[50,99)","t","t","f","f","f","t"]}
  204. DataRow {"fields":["[-1,1)","empty","f","f","t","t","f","t"]}
  205. DataRow {"fields":["[-1,1)","(,1)","f","f","t","t","f","t"]}
  206. DataRow {"fields":["[-1,1)","(,)","f","f","t","t","f","t"]}
  207. DataRow {"fields":["[-1,1)","[-99,-50)","f","f","t","t","f","t"]}
  208. DataRow {"fields":["[-1,1)","[-1,1)","f","t","f","t","t","f"]}
  209. DataRow {"fields":["[-1,1)","[0,)","t","t","f","f","f","t"]}
  210. DataRow {"fields":["[-1,1)","[50,99)","t","t","f","f","f","t"]}
  211. DataRow {"fields":["[0,)","empty","f","f","t","t","f","t"]}
  212. DataRow {"fields":["[0,)","(,1)","f","f","t","t","f","t"]}
  213. DataRow {"fields":["[0,)","(,)","f","f","t","t","f","t"]}
  214. DataRow {"fields":["[0,)","[-99,-50)","f","f","t","t","f","t"]}
  215. DataRow {"fields":["[0,)","[-1,1)","f","f","t","t","f","t"]}
  216. DataRow {"fields":["[0,)","[0,)","f","t","f","t","t","f"]}
  217. DataRow {"fields":["[0,)","[50,99)","t","t","f","f","f","t"]}
  218. DataRow {"fields":["[50,99)","empty","f","f","t","t","f","t"]}
  219. DataRow {"fields":["[50,99)","(,1)","f","f","t","t","f","t"]}
  220. DataRow {"fields":["[50,99)","(,)","f","f","t","t","f","t"]}
  221. DataRow {"fields":["[50,99)","[-99,-50)","f","f","t","t","f","t"]}
  222. DataRow {"fields":["[50,99)","[-1,1)","f","f","t","t","f","t"]}
  223. DataRow {"fields":["[50,99)","[0,)","f","f","t","t","f","t"]}
  224. DataRow {"fields":["[50,99)","[50,99)","f","t","f","t","t","f"]}
  225. CommandComplete {"tag":"SELECT 49"}
  226. ReadyForQuery {"status":"I"}
  227. send
  228. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a @> v GROUP BY a ORDER BY a;"}
  229. Bind
  230. Execute
  231. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a <@ v GROUP BY a ORDER BY a;"}
  232. Bind
  233. Execute
  234. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a && v GROUP BY a ORDER BY a;"}
  235. Bind
  236. Execute
  237. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a << v GROUP BY a ORDER BY a;"}
  238. Bind
  239. Execute
  240. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a >> v GROUP BY a ORDER BY a;"}
  241. Bind
  242. Execute
  243. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a &< v GROUP BY a ORDER BY a;"}
  244. Bind
  245. Execute
  246. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a &> v GROUP BY a ORDER BY a;"}
  247. Bind
  248. Execute
  249. Parse {"query": "SELECT a t, array_agg(v ORDER BY v) FROM ( SELECT DISTINCT a FROM numrange_values WHERE a IS NOT NULL ) numrange_values(a), numrange_test_values WHERE a -|- v GROUP BY a ORDER BY a;"}
  250. Bind
  251. Execute
  252. Parse {"query": "SELECT DISTINCT l.v, r.v, l.v < r.v, l.v <= r.v, l.v > r.v, l.v >= r.v, l.v = r.v, l.v <> r.v FROM numrange_test_values AS l, numrange_test_values AS r ORDER BY 1, 2;"}
  253. Bind
  254. Execute
  255. Sync
  256. ----
  257. until
  258. ReadyForQuery
  259. ----
  260. ParseComplete
  261. BindComplete
  262. DataRow {"fields":["empty","{empty}"]}
  263. DataRow {"fields":["(,1)","{empty,\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  264. DataRow {"fields":["(,1]","{empty,\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  265. DataRow {"fields":["(,)","{empty,\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  266. DataRow {"fields":["[-1,1)","{empty,\"[-1,1)\"}"]}
  267. DataRow {"fields":["[-1,1]","{empty,\"[-1,1)\"}"]}
  268. DataRow {"fields":["(-1,1)","{empty}"]}
  269. DataRow {"fields":["(-1,1]","{empty}"]}
  270. DataRow {"fields":["[0,0]","{empty}"]}
  271. DataRow {"fields":["[1,)","{empty,\"[50,99)\"}"]}
  272. DataRow {"fields":["(1,)","{empty,\"[50,99)\"}"]}
  273. CommandComplete {"tag":"SELECT 11"}
  274. ParseComplete
  275. BindComplete
  276. DataRow {"fields":["empty","{empty,\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  277. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\"}"]}
  278. DataRow {"fields":["(,1]","{\"(,)\"}"]}
  279. DataRow {"fields":["(,)","{\"(,)\"}"]}
  280. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\"}"]}
  281. DataRow {"fields":["[-1,1]","{\"(,)\"}"]}
  282. DataRow {"fields":["(-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  283. DataRow {"fields":["(-1,1]","{\"(,)\",\"(-1,)\"}"]}
  284. DataRow {"fields":["[0,0]","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  285. DataRow {"fields":["[1,)","{\"(,)\",\"(-1,)\"}"]}
  286. DataRow {"fields":["(1,)","{\"(,)\",\"(-1,)\"}"]}
  287. CommandComplete {"tag":"SELECT 11"}
  288. ParseComplete
  289. BindComplete
  290. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  291. DataRow {"fields":["(,1]","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  292. DataRow {"fields":["(,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  293. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  294. DataRow {"fields":["[-1,1]","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  295. DataRow {"fields":["(-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  296. DataRow {"fields":["(-1,1]","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  297. DataRow {"fields":["[0,0]","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\"}"]}
  298. DataRow {"fields":["[1,)","{\"(,)\",\"(-1,)\",\"[50,99)\"}"]}
  299. DataRow {"fields":["(1,)","{\"(,)\",\"(-1,)\",\"[50,99)\"}"]}
  300. CommandComplete {"tag":"SELECT 10"}
  301. ParseComplete
  302. BindComplete
  303. DataRow {"fields":["(,1)","{\"[50,99)\"}"]}
  304. DataRow {"fields":["(,1]","{\"[50,99)\"}"]}
  305. DataRow {"fields":["[-1,1)","{\"[50,99)\"}"]}
  306. DataRow {"fields":["[-1,1]","{\"[50,99)\"}"]}
  307. DataRow {"fields":["(-1,1)","{\"[50,99)\"}"]}
  308. DataRow {"fields":["(-1,1]","{\"[50,99)\"}"]}
  309. DataRow {"fields":["[0,0]","{\"[50,99)\"}"]}
  310. CommandComplete {"tag":"SELECT 7"}
  311. ParseComplete
  312. BindComplete
  313. DataRow {"fields":["[-1,1)","{\"[-99,-50)\"}"]}
  314. DataRow {"fields":["[-1,1]","{\"[-99,-50)\"}"]}
  315. DataRow {"fields":["(-1,1)","{\"[-99,-50)\"}"]}
  316. DataRow {"fields":["(-1,1]","{\"[-99,-50)\"}"]}
  317. DataRow {"fields":["[0,0]","{\"[-99,-50)\"}"]}
  318. DataRow {"fields":["[1,)","{\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  319. DataRow {"fields":["(1,)","{\"(,1)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  320. CommandComplete {"tag":"SELECT 7"}
  321. ParseComplete
  322. BindComplete
  323. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  324. DataRow {"fields":["(,1]","{\"(,)\",\"(-1,)\",\"[50,99)\"}"]}
  325. DataRow {"fields":["(,)","{\"(,)\",\"(-1,)\"}"]}
  326. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  327. DataRow {"fields":["[-1,1]","{\"(,)\",\"(-1,)\",\"[50,99)\"}"]}
  328. DataRow {"fields":["(-1,1)","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  329. DataRow {"fields":["(-1,1]","{\"(,)\",\"(-1,)\",\"[50,99)\"}"]}
  330. DataRow {"fields":["[0,0]","{\"(,1)\",\"(,)\",\"[-1,1)\",\"(-1,)\",\"[50,99)\"}"]}
  331. DataRow {"fields":["[1,)","{\"(,)\",\"(-1,)\"}"]}
  332. DataRow {"fields":["(1,)","{\"(,)\",\"(-1,)\"}"]}
  333. CommandComplete {"tag":"SELECT 10"}
  334. ParseComplete
  335. BindComplete
  336. DataRow {"fields":["(,1)","{\"(,1)\",\"(,)\"}"]}
  337. DataRow {"fields":["(,1]","{\"(,1)\",\"(,)\"}"]}
  338. DataRow {"fields":["(,)","{\"(,1)\",\"(,)\"}"]}
  339. DataRow {"fields":["[-1,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  340. DataRow {"fields":["[-1,1]","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\"}"]}
  341. DataRow {"fields":["(-1,1)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  342. DataRow {"fields":["(-1,1]","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  343. DataRow {"fields":["[0,0]","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  344. DataRow {"fields":["[1,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  345. DataRow {"fields":["(1,)","{\"(,1)\",\"(,)\",\"[-99,-50)\",\"[-1,1)\",\"(-1,)\"}"]}
  346. CommandComplete {"tag":"SELECT 10"}
  347. ParseComplete
  348. BindComplete
  349. DataRow {"fields":["[1,)","{\"(,1)\",\"[-1,1)\"}"]}
  350. CommandComplete {"tag":"SELECT 1"}
  351. ParseComplete
  352. BindComplete
  353. DataRow {"fields":["empty","empty","f","t","f","t","t","f"]}
  354. DataRow {"fields":["empty","(,1)","t","t","f","f","f","t"]}
  355. DataRow {"fields":["empty","(,)","t","t","f","f","f","t"]}
  356. DataRow {"fields":["empty","[-99,-50)","t","t","f","f","f","t"]}
  357. DataRow {"fields":["empty","[-1,1)","t","t","f","f","f","t"]}
  358. DataRow {"fields":["empty","(-1,)","t","t","f","f","f","t"]}
  359. DataRow {"fields":["empty","[50,99)","t","t","f","f","f","t"]}
  360. DataRow {"fields":["(,1)","empty","f","f","t","t","f","t"]}
  361. DataRow {"fields":["(,1)","(,1)","f","t","f","t","t","f"]}
  362. DataRow {"fields":["(,1)","(,)","t","t","f","f","f","t"]}
  363. DataRow {"fields":["(,1)","[-99,-50)","t","t","f","f","f","t"]}
  364. DataRow {"fields":["(,1)","[-1,1)","t","t","f","f","f","t"]}
  365. DataRow {"fields":["(,1)","(-1,)","t","t","f","f","f","t"]}
  366. DataRow {"fields":["(,1)","[50,99)","t","t","f","f","f","t"]}
  367. DataRow {"fields":["(,)","empty","f","f","t","t","f","t"]}
  368. DataRow {"fields":["(,)","(,1)","f","f","t","t","f","t"]}
  369. DataRow {"fields":["(,)","(,)","f","t","f","t","t","f"]}
  370. DataRow {"fields":["(,)","[-99,-50)","t","t","f","f","f","t"]}
  371. DataRow {"fields":["(,)","[-1,1)","t","t","f","f","f","t"]}
  372. DataRow {"fields":["(,)","(-1,)","t","t","f","f","f","t"]}
  373. DataRow {"fields":["(,)","[50,99)","t","t","f","f","f","t"]}
  374. DataRow {"fields":["[-99,-50)","empty","f","f","t","t","f","t"]}
  375. DataRow {"fields":["[-99,-50)","(,1)","f","f","t","t","f","t"]}
  376. DataRow {"fields":["[-99,-50)","(,)","f","f","t","t","f","t"]}
  377. DataRow {"fields":["[-99,-50)","[-99,-50)","f","t","f","t","t","f"]}
  378. DataRow {"fields":["[-99,-50)","[-1,1)","t","t","f","f","f","t"]}
  379. DataRow {"fields":["[-99,-50)","(-1,)","t","t","f","f","f","t"]}
  380. DataRow {"fields":["[-99,-50)","[50,99)","t","t","f","f","f","t"]}
  381. DataRow {"fields":["[-1,1)","empty","f","f","t","t","f","t"]}
  382. DataRow {"fields":["[-1,1)","(,1)","f","f","t","t","f","t"]}
  383. DataRow {"fields":["[-1,1)","(,)","f","f","t","t","f","t"]}
  384. DataRow {"fields":["[-1,1)","[-99,-50)","f","f","t","t","f","t"]}
  385. DataRow {"fields":["[-1,1)","[-1,1)","f","t","f","t","t","f"]}
  386. DataRow {"fields":["[-1,1)","(-1,)","t","t","f","f","f","t"]}
  387. DataRow {"fields":["[-1,1)","[50,99)","t","t","f","f","f","t"]}
  388. DataRow {"fields":["(-1,)","empty","f","f","t","t","f","t"]}
  389. DataRow {"fields":["(-1,)","(,1)","f","f","t","t","f","t"]}
  390. DataRow {"fields":["(-1,)","(,)","f","f","t","t","f","t"]}
  391. DataRow {"fields":["(-1,)","[-99,-50)","f","f","t","t","f","t"]}
  392. DataRow {"fields":["(-1,)","[-1,1)","f","f","t","t","f","t"]}
  393. DataRow {"fields":["(-1,)","(-1,)","f","t","f","t","t","f"]}
  394. DataRow {"fields":["(-1,)","[50,99)","t","t","f","f","f","t"]}
  395. DataRow {"fields":["[50,99)","empty","f","f","t","t","f","t"]}
  396. DataRow {"fields":["[50,99)","(,1)","f","f","t","t","f","t"]}
  397. DataRow {"fields":["[50,99)","(,)","f","f","t","t","f","t"]}
  398. DataRow {"fields":["[50,99)","[-99,-50)","f","f","t","t","f","t"]}
  399. DataRow {"fields":["[50,99)","[-1,1)","f","f","t","t","f","t"]}
  400. DataRow {"fields":["[50,99)","(-1,)","f","f","t","t","f","t"]}
  401. DataRow {"fields":["[50,99)","[50,99)","f","t","f","t","t","f"]}
  402. CommandComplete {"tag":"SELECT 49"}
  403. ReadyForQuery {"status":"I"}
  404. # test range binary encodings
  405. send
  406. Parse {"query": "SELECT * FROM int4range_values ORDER BY a;"}
  407. Bind {"result_formats": [1]}
  408. Execute
  409. Parse {"query": "SELECT * FROM numrange_values ORDER BY a;"}
  410. Bind {"result_formats": [1]}
  411. Execute
  412. Sync
  413. ----
  414. until
  415. ReadyForQuery
  416. ----
  417. ParseComplete
  418. BindComplete
  419. DataRow {"fields":["\u0001"]}
  420. DataRow {"fields":["\u0001"]}
  421. DataRow {"fields":["\u0001"]}
  422. DataRow {"fields":["\b\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  423. DataRow {"fields":["\b\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  424. DataRow {"fields":["\b\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0002"]}
  425. DataRow {"fields":["\b\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0002"]}
  426. DataRow {"fields":["\u0018"]}
  427. DataRow {"fields":["\u0018"]}
  428. DataRow {"fields":["\u0018"]}
  429. DataRow {"fields":["\u0018"]}
  430. DataRow {"fields":["[2, 0, 0, 0, 4, 255, 255, 255, 255, 0, 0, 0, 4, 0, 0, 0, 1]"]}
  431. DataRow {"fields":["[2, 0, 0, 0, 4, 255, 255, 255, 255, 0, 0, 0, 4, 0, 0, 0, 2]"]}
  432. DataRow {"fields":["\u0002\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  433. DataRow {"fields":["\u0002\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  434. DataRow {"fields":["\u0002\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0002"]}
  435. DataRow {"fields":["\u0012\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  436. DataRow {"fields":["\u0012\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001"]}
  437. DataRow {"fields":["\u0012\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0002"]}
  438. DataRow {"fields":["\u0012\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0002"]}
  439. CommandComplete {"tag":"SELECT 20"}
  440. ParseComplete
  441. BindComplete
  442. DataRow {"fields":["\u0001"]}
  443. DataRow {"fields":["\u0001"]}
  444. DataRow {"fields":["\u0001"]}
  445. DataRow {"fields":["\b\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  446. DataRow {"fields":["\b\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  447. DataRow {"fields":["\f\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  448. DataRow {"fields":["\f\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  449. DataRow {"fields":["\u0018"]}
  450. DataRow {"fields":["\u0018"]}
  451. DataRow {"fields":["\u0018"]}
  452. DataRow {"fields":["\u0018"]}
  453. DataRow {"fields":["\u0002\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000@\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  454. DataRow {"fields":["\u0006\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000@\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  455. DataRow {"fields":["\u0000\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000@\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  456. DataRow {"fields":["\u0004\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000@\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  457. DataRow {"fields":["\u0006\u0000\u0000\u0000\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000"]}
  458. DataRow {"fields":["\u0012\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  459. DataRow {"fields":["\u0012\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  460. DataRow {"fields":["\u0010\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  461. DataRow {"fields":["\u0010\u0000\u0000\u0000\n\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001"]}
  462. CommandComplete {"tag":"SELECT 20"}
  463. ReadyForQuery {"status":"I"}