libcouchbase 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (561) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +35 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +24 -0
  8. data/README.md +389 -0
  9. data/Rakefile +75 -0
  10. data/ext/README.md +6 -0
  11. data/ext/Rakefile +20 -0
  12. data/ext/libcouchbase/.gitignore +130 -0
  13. data/ext/libcouchbase/.travis.yml +19 -0
  14. data/ext/libcouchbase/CMakeLists.txt +429 -0
  15. data/ext/libcouchbase/CONTRIBUTING.md +124 -0
  16. data/ext/libcouchbase/LICENSE +202 -0
  17. data/ext/libcouchbase/README.markdown +163 -0
  18. data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
  19. data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -0
  20. data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
  21. data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
  22. data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +20 -0
  23. data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
  24. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
  25. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +52 -0
  26. data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
  27. data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
  28. data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
  29. data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -0
  30. data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
  31. data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
  32. data/ext/libcouchbase/cmake/config-cmake.h.in +60 -0
  33. data/ext/libcouchbase/cmake/configure +357 -0
  34. data/ext/libcouchbase/cmake/defs.mk.in +8 -0
  35. data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
  36. data/ext/libcouchbase/cmake/source_files.cmake +73 -0
  37. data/ext/libcouchbase/configure.pl +1 -0
  38. data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
  39. data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
  40. data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
  41. data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
  42. data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
  43. data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
  44. data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -0
  45. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
  46. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
  47. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
  48. data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
  49. data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
  50. data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
  51. data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
  52. data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
  53. data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
  54. data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
  55. data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
  56. data/ext/libcouchbase/contrib/genhash/genhash.h +235 -0
  57. data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
  58. data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
  59. data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
  60. data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
  61. data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
  62. data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
  63. data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
  64. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
  65. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
  66. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
  67. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
  68. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
  69. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
  70. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
  71. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
  72. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
  73. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
  74. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
  75. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
  76. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
  77. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
  78. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
  79. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
  80. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
  81. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
  82. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
  83. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
  84. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
  85. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
  86. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
  87. data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
  88. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
  89. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
  90. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
  91. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
  92. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
  93. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
  94. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
  95. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
  96. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
  97. data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
  98. data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
  99. data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
  100. data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
  101. data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
  102. data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
  103. data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
  104. data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
  105. data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
  106. data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
  107. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
  108. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4892 -0
  109. data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
  110. data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -0
  111. data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
  112. data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
  113. data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
  114. data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
  115. data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
  116. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +71 -0
  117. data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
  118. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
  119. data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
  120. data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +98 -0
  121. data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -0
  122. data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
  123. data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
  124. data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
  125. data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
  126. data/ext/libcouchbase/example/CMakeLists.txt +37 -0
  127. data/ext/libcouchbase/example/README.markdown +47 -0
  128. data/ext/libcouchbase/example/db/db.c +167 -0
  129. data/ext/libcouchbase/example/db/vb.c +227 -0
  130. data/ext/libcouchbase/example/instancepool/main.cc +102 -0
  131. data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
  132. data/ext/libcouchbase/example/instancepool/pool.h +69 -0
  133. data/ext/libcouchbase/example/libeventdirect/main.c +148 -0
  134. data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
  135. data/ext/libcouchbase/example/minimal/minimal.c +130 -0
  136. data/ext/libcouchbase/example/observe/observe.c +146 -0
  137. data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
  138. data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
  139. data/ext/libcouchbase/example/tick/tick.c +119 -0
  140. data/ext/libcouchbase/example/views/views-example.cc +83 -0
  141. data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
  142. data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
  143. data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
  144. data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
  145. data/ext/libcouchbase/include/libcouchbase/cbft.h +109 -0
  146. data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
  147. data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
  148. data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
  149. data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
  150. data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
  151. data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
  152. data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
  153. data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
  154. data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
  155. data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
  156. data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
  157. data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
  158. data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -0
  159. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
  160. data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
  161. data/ext/libcouchbase/include/libcouchbase/subdoc.h +312 -0
  162. data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
  163. data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
  164. data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
  165. data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -0
  166. data/ext/libcouchbase/include/memcached/COPYING +30 -0
  167. data/ext/libcouchbase/include/memcached/README +10 -0
  168. data/ext/libcouchbase/include/memcached/protocol_binary.h +1916 -0
  169. data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
  170. data/ext/libcouchbase/packaging/README +7 -0
  171. data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
  172. data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
  173. data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
  174. data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
  175. data/ext/libcouchbase/packaging/deb/compat +1 -0
  176. data/ext/libcouchbase/packaging/deb/control +73 -0
  177. data/ext/libcouchbase/packaging/deb/copyright +10 -0
  178. data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
  179. data/ext/libcouchbase/packaging/deb/package.mk +31 -0
  180. data/ext/libcouchbase/packaging/deb/rules +46 -0
  181. data/ext/libcouchbase/packaging/deb/source/format +1 -0
  182. data/ext/libcouchbase/packaging/distinfo/README +1 -0
  183. data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
  184. data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
  185. data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
  186. data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
  187. data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
  188. data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +108 -0
  189. data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
  190. data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
  191. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +466 -0
  192. data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
  193. data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
  194. data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
  195. data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
  196. data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +29 -0
  197. data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
  198. data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
  199. data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -0
  200. data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
  201. data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
  202. data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +42 -0
  203. data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
  204. data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
  205. data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
  206. data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
  207. data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
  208. data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
  209. data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
  210. data/ext/libcouchbase/src/README.md +103 -0
  211. data/ext/libcouchbase/src/aspend.h +106 -0
  212. data/ext/libcouchbase/src/auth.cc +74 -0
  213. data/ext/libcouchbase/src/auth.h +54 -0
  214. data/ext/libcouchbase/src/bootstrap.c +269 -0
  215. data/ext/libcouchbase/src/bootstrap.h +129 -0
  216. data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
  217. data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
  218. data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
  219. data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
  220. data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
  221. data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
  222. data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
  223. data/ext/libcouchbase/src/callbacks.c +378 -0
  224. data/ext/libcouchbase/src/cbft.cc +210 -0
  225. data/ext/libcouchbase/src/cntl.cc +847 -0
  226. data/ext/libcouchbase/src/config_static.h +159 -0
  227. data/ext/libcouchbase/src/connspec.cc +462 -0
  228. data/ext/libcouchbase/src/connspec.h +105 -0
  229. data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
  230. data/ext/libcouchbase/src/dump.c +98 -0
  231. data/ext/libcouchbase/src/getconfig.c +100 -0
  232. data/ext/libcouchbase/src/gethrtime.c +109 -0
  233. data/ext/libcouchbase/src/handler.c +922 -0
  234. data/ext/libcouchbase/src/hashset.c +164 -0
  235. data/ext/libcouchbase/src/hashset.h +86 -0
  236. data/ext/libcouchbase/src/hashtable.c +75 -0
  237. data/ext/libcouchbase/src/hdr_timings.c +92 -0
  238. data/ext/libcouchbase/src/hostlist.cc +301 -0
  239. data/ext/libcouchbase/src/hostlist.h +171 -0
  240. data/ext/libcouchbase/src/http/http-priv.h +307 -0
  241. data/ext/libcouchbase/src/http/http.cc +633 -0
  242. data/ext/libcouchbase/src/http/http.h +34 -0
  243. data/ext/libcouchbase/src/http/http_io.cc +307 -0
  244. data/ext/libcouchbase/src/instance.cc +722 -0
  245. data/ext/libcouchbase/src/internal.h +244 -0
  246. data/ext/libcouchbase/src/iofactory.c +575 -0
  247. data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
  248. data/ext/libcouchbase/src/jsparse/parser.h +173 -0
  249. data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
  250. data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
  251. data/ext/libcouchbase/src/lcbio/connect.c +557 -0
  252. data/ext/libcouchbase/src/lcbio/connect.h +364 -0
  253. data/ext/libcouchbase/src/lcbio/ctx.c +611 -0
  254. data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
  255. data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
  256. data/ext/libcouchbase/src/lcbio/iotable.h +84 -0
  257. data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
  258. data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
  259. data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
  260. data/ext/libcouchbase/src/lcbio/manager.c +584 -0
  261. data/ext/libcouchbase/src/lcbio/manager.h +156 -0
  262. data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
  263. data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
  264. data/ext/libcouchbase/src/lcbio/ssl.h +149 -0
  265. data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
  266. data/ext/libcouchbase/src/lcbio/timer.c +132 -0
  267. data/ext/libcouchbase/src/legacy.c +430 -0
  268. data/ext/libcouchbase/src/list.c +144 -0
  269. data/ext/libcouchbase/src/list.h +127 -0
  270. data/ext/libcouchbase/src/logging.c +244 -0
  271. data/ext/libcouchbase/src/logging.h +86 -0
  272. data/ext/libcouchbase/src/mc/compress.c +90 -0
  273. data/ext/libcouchbase/src/mc/compress.h +61 -0
  274. data/ext/libcouchbase/src/mc/forward.c +186 -0
  275. data/ext/libcouchbase/src/mc/forward.h +90 -0
  276. data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
  277. data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
  278. data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +111 -0
  279. data/ext/libcouchbase/src/mc/mcreq.c +954 -0
  280. data/ext/libcouchbase/src/mc/mcreq.h +977 -0
  281. data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
  282. data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
  283. data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
  284. data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
  285. data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
  286. data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
  287. data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
  288. data/ext/libcouchbase/src/n1ql/params.cc +215 -0
  289. data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
  290. data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
  291. data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
  292. data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
  293. data/ext/libcouchbase/src/newconfig.c +385 -0
  294. data/ext/libcouchbase/src/nodeinfo.cc +194 -0
  295. data/ext/libcouchbase/src/operations/cbflush.c +71 -0
  296. data/ext/libcouchbase/src/operations/counter.c +116 -0
  297. data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
  298. data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
  299. data/ext/libcouchbase/src/operations/durability.c +668 -0
  300. data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
  301. data/ext/libcouchbase/src/operations/get.c +409 -0
  302. data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
  303. data/ext/libcouchbase/src/operations/observe.c +340 -0
  304. data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
  305. data/ext/libcouchbase/src/operations/remove.c +83 -0
  306. data/ext/libcouchbase/src/operations/stats.c +461 -0
  307. data/ext/libcouchbase/src/operations/store.c +360 -0
  308. data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
  309. data/ext/libcouchbase/src/operations/touch.c +81 -0
  310. data/ext/libcouchbase/src/packetutils.c +60 -0
  311. data/ext/libcouchbase/src/packetutils.h +147 -0
  312. data/ext/libcouchbase/src/probes.d +211 -0
  313. data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
  314. data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
  315. data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
  316. data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
  317. data/ext/libcouchbase/src/rdb/rope.c +419 -0
  318. data/ext/libcouchbase/src/rdb/rope.h +488 -0
  319. data/ext/libcouchbase/src/retrychk.c +113 -0
  320. data/ext/libcouchbase/src/retryq.c +424 -0
  321. data/ext/libcouchbase/src/retryq.h +157 -0
  322. data/ext/libcouchbase/src/ringbuffer.c +442 -0
  323. data/ext/libcouchbase/src/ringbuffer.h +100 -0
  324. data/ext/libcouchbase/src/settings.c +95 -0
  325. data/ext/libcouchbase/src/settings.h +188 -0
  326. data/ext/libcouchbase/src/simplestring.c +211 -0
  327. data/ext/libcouchbase/src/simplestring.h +228 -0
  328. data/ext/libcouchbase/src/sllist-inl.h +197 -0
  329. data/ext/libcouchbase/src/sllist.h +76 -0
  330. data/ext/libcouchbase/src/ssl/CMakeLists.txt +23 -0
  331. data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
  332. data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
  333. data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
  334. data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
  335. data/ext/libcouchbase/src/ssobuf.h +82 -0
  336. data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
  337. data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
  338. data/ext/libcouchbase/src/timings.c +208 -0
  339. data/ext/libcouchbase/src/trace.h +105 -0
  340. data/ext/libcouchbase/src/utilities.c +171 -0
  341. data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
  342. data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
  343. data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
  344. data/ext/libcouchbase/src/vbucket/hash.h +30 -0
  345. data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
  346. data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
  347. data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
  348. data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
  349. data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
  350. data/ext/libcouchbase/src/vbucket/vbucket.c +1543 -0
  351. data/ext/libcouchbase/src/views/docreq.c +194 -0
  352. data/ext/libcouchbase/src/views/docreq.h +83 -0
  353. data/ext/libcouchbase/src/views/viewreq.c +358 -0
  354. data/ext/libcouchbase/src/views/viewreq.h +36 -0
  355. data/ext/libcouchbase/src/wait.c +161 -0
  356. data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
  357. data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
  358. data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
  359. data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
  360. data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
  361. data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
  362. data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
  363. data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
  364. data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -0
  365. data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
  366. data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
  367. data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
  368. data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
  369. data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +18 -0
  370. data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
  371. data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
  372. data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
  373. data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
  374. data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
  375. data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
  376. data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
  377. data/ext/libcouchbase/tests/check-all.cc +608 -0
  378. data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -0
  379. data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
  380. data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
  381. data/ext/libcouchbase/tests/ioserver/ioserver.cc +104 -0
  382. data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
  383. data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
  384. data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
  385. data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
  386. data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
  387. data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
  388. data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
  389. data/ext/libcouchbase/tests/iotests/mock-environment.cc +524 -0
  390. data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -0
  391. data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
  392. data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
  393. data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
  394. data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
  395. data/ext/libcouchbase/tests/iotests/t_behavior.cc +226 -0
  396. data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
  397. data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
  398. data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
  399. data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -0
  400. data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
  401. data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
  402. data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
  403. data/ext/libcouchbase/tests/iotests/t_lock.cc +275 -0
  404. data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -0
  405. data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
  406. data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
  407. data/ext/libcouchbase/tests/iotests/t_netfail.cc +654 -0
  408. data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
  409. data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
  410. data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
  411. data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
  412. data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
  413. data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
  414. data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
  415. data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
  416. data/ext/libcouchbase/tests/iotests/testutil.cc +250 -0
  417. data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
  418. data/ext/libcouchbase/tests/mc/mctest.h +119 -0
  419. data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
  420. data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
  421. data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
  422. data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
  423. data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
  424. data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
  425. data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
  426. data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
  427. data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
  428. data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
  429. data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
  430. data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
  431. data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
  432. data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
  433. data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
  434. data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
  435. data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
  436. data/ext/libcouchbase/tests/socktests/socktest.cc +347 -0
  437. data/ext/libcouchbase/tests/socktests/socktest.h +448 -0
  438. data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
  439. data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
  440. data/ext/libcouchbase/tests/socktests/t_manager.cc +179 -0
  441. data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
  442. data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
  443. data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
  444. data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
  445. data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
  446. data/ext/libcouchbase/tests/start_mock.bat +15 -0
  447. data/ext/libcouchbase/tests/start_mock.sh +42 -0
  448. data/ext/libcouchbase/tests/unit_tests.cc +43 -0
  449. data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
  450. data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
  451. data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
  452. data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
  453. data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
  454. data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
  455. data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
  456. data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
  457. data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
  458. data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
  459. data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
  460. data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
  461. data/ext/libcouchbase/tools/cbc.cc +1541 -0
  462. data/ext/libcouchbase/tools/common/histogram.cc +43 -0
  463. data/ext/libcouchbase/tools/common/histogram.h +23 -0
  464. data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
  465. data/ext/libcouchbase/tools/common/options.cc +420 -0
  466. data/ext/libcouchbase/tools/common/options.h +81 -0
  467. data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
  468. data/ext/libcouchbase/tools/docgen/loc.h +210 -0
  469. data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
  470. data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
  471. data/lib/libcouchbase.rb +36 -0
  472. data/lib/libcouchbase/bucket.rb +819 -0
  473. data/lib/libcouchbase/callbacks.rb +72 -0
  474. data/lib/libcouchbase/connection.rb +790 -0
  475. data/lib/libcouchbase/design_docs.rb +86 -0
  476. data/lib/libcouchbase/error.rb +68 -0
  477. data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
  478. data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
  479. data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
  480. data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
  481. data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
  482. data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
  483. data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
  484. data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
  485. data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
  486. data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
  487. data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
  488. data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
  489. data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
  490. data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
  491. data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
  492. data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
  493. data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
  494. data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
  495. data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
  496. data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
  497. data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
  498. data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
  499. data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
  500. data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
  501. data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
  502. data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
  503. data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
  504. data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
  505. data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
  506. data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
  507. data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
  508. data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
  509. data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
  510. data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
  511. data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
  512. data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
  513. data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
  514. data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
  515. data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
  516. data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
  517. data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
  518. data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
  519. data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
  520. data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
  521. data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
  522. data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
  523. data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
  524. data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
  525. data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
  526. data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
  527. data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
  528. data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
  529. data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
  530. data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
  531. data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
  532. data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
  533. data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
  534. data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
  535. data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
  536. data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
  537. data/lib/libcouchbase/ext/tasks.rb +87 -0
  538. data/lib/libcouchbase/n1ql.rb +73 -0
  539. data/lib/libcouchbase/query_full_text.rb +147 -0
  540. data/lib/libcouchbase/query_n1ql.rb +121 -0
  541. data/lib/libcouchbase/query_view.rb +129 -0
  542. data/lib/libcouchbase/results_fiber.rb +262 -0
  543. data/lib/libcouchbase/results_native.rb +211 -0
  544. data/lib/libcouchbase/version.rb +5 -0
  545. data/libcouchbase.gemspec +61 -0
  546. data/spec/bucket_spec.rb +270 -0
  547. data/spec/connection_spec.rb +277 -0
  548. data/spec/design_docs_spec.rb +23 -0
  549. data/spec/error_spec.rb +26 -0
  550. data/spec/fts_spec.rb +129 -0
  551. data/spec/n1ql_spec.rb +201 -0
  552. data/spec/results_libuv_spec.rb +229 -0
  553. data/spec/results_native_spec.rb +259 -0
  554. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
  555. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
  556. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
  557. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
  558. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
  559. data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
  560. data/spec/view_spec.rb +195 -0
  561. metadata +775 -0
@@ -0,0 +1,137 @@
1
+ #include "config.h"
2
+ #include <gtest/gtest.h>
3
+ #include <libcouchbase/couchbase.h>
4
+ #include "jsparse/parser.h"
5
+ #include "contrib/lcb-jsoncpp/lcb-jsoncpp.h"
6
+ #include "t_jsparse.h"
7
+
8
+ class JsonParseTest : public ::testing::Test {
9
+ };
10
+
11
+
12
+ struct Context {
13
+ lcb_error_t rc;
14
+ bool received_done;
15
+ std::string meta;
16
+ std::vector<std::string> rows;
17
+ Context() {
18
+ reset();
19
+ }
20
+ void reset() {
21
+ rc = LCB_SUCCESS;
22
+ received_done = false;
23
+ meta.clear();
24
+ rows.clear();
25
+ }
26
+ };
27
+
28
+ class Parser {
29
+ public:
30
+ Parser(int mode_) : mode(mode_), inner(NULL) {
31
+ reset();
32
+ }
33
+
34
+ void reset() {
35
+ if (inner != NULL) {
36
+ lcbjsp_free(inner);
37
+ }
38
+ inner = lcbjsp_create(mode);
39
+ }
40
+
41
+ ~Parser() {
42
+ if (inner != NULL) {
43
+ lcbjsp_free(inner);
44
+ }
45
+ }
46
+
47
+ operator lcbjsp_PARSER* () {
48
+ return inner;
49
+ }
50
+
51
+ lcbjsp_PARSER *getInner() {
52
+ return inner;
53
+ }
54
+
55
+ private:
56
+ int mode;
57
+ lcbjsp_PARSER *inner;
58
+ Parser(Parser&);
59
+ };
60
+
61
+ static std::string iov2s(const lcb_IOV& iov) {
62
+ return std::string(reinterpret_cast<const char*>(iov.iov_base), iov.iov_len);
63
+ }
64
+
65
+ extern "C" {
66
+ static void rowCallback(lcbjsp_PARSER *parser, const lcbjsp_ROW *row) {
67
+ Context *ctx = reinterpret_cast<Context*>(parser->data);
68
+ if (row->type == LCBJSP_TYPE_ERROR) {
69
+ ctx->rc = LCB_PROTOCOL_ERROR;
70
+ ctx->received_done = true;
71
+ } else if (row->type == LCBJSP_TYPE_ROW) {
72
+ ctx->rows.push_back(iov2s(row->row));
73
+ } else if (row->type == LCBJSP_TYPE_COMPLETE) {
74
+ ctx->meta = iov2s(row->row);
75
+ ctx->received_done = true;
76
+ }
77
+ }
78
+ }
79
+
80
+ static bool validateJsonRows(const char *txt, size_t ntxt, int mode)
81
+ {
82
+ Parser parser(mode);
83
+ EXPECT_TRUE(parser != NULL);
84
+ if (parser == NULL) {
85
+ return false;
86
+ }
87
+
88
+ // Feed it once
89
+ Context cx;
90
+ parser.getInner()->callback = rowCallback;
91
+ parser.getInner()->data = &cx;
92
+
93
+ for (size_t ii = 0; ii < ntxt; ii++) {
94
+ lcbjsp_feed(parser, txt + ii, 1);
95
+ }
96
+ EXPECT_EQ(LCB_SUCCESS, cx.rc);
97
+
98
+ lcb_IOV out;
99
+ lcbjsp_get_postmortem(parser, &out);
100
+ EXPECT_EQ(cx.meta, iov2s(out));
101
+ Json::Value root;
102
+ EXPECT_TRUE(Json::Reader().parse(cx.meta, root));
103
+ return true;
104
+ }
105
+
106
+ static bool validateBadParse(const char *txt, size_t ntxt, int mode)
107
+ {
108
+ Parser p(mode);
109
+ Context cx;
110
+ p.getInner()->callback = rowCallback;
111
+ p.getInner()->data = &cx;
112
+ lcbjsp_feed(p, JSON_fts_bad, sizeof(JSON_fts_bad));
113
+ EXPECT_EQ(LCB_PROTOCOL_ERROR, cx.rc);
114
+
115
+ p.reset();
116
+ cx.reset();
117
+
118
+ p.getInner()->callback = rowCallback;
119
+ p.getInner()->data = &cx;
120
+
121
+ for (size_t ii = 0; ii < ntxt; ++ii) {
122
+ }
123
+ return true;
124
+ }
125
+
126
+ TEST_F(JsonParseTest, testFTS)
127
+ {
128
+ ASSERT_TRUE(validateJsonRows(JSON_fts_good, sizeof(JSON_fts_good), LCBJSP_MODE_FTS));
129
+ ASSERT_TRUE(validateBadParse(JSON_fts_bad, sizeof(JSON_fts_bad), LCBJSP_MODE_FTS));
130
+ ASSERT_TRUE(validateBadParse(JSON_fts_bad2, sizeof(JSON_fts_bad2), LCBJSP_MODE_FTS));
131
+ }
132
+
133
+ TEST_F(JsonParseTest, testN1QL) {
134
+ ASSERT_TRUE(validateJsonRows(JSON_n1ql_nonempty, sizeof(JSON_n1ql_nonempty), LCBJSP_MODE_N1QL));
135
+ ASSERT_TRUE(validateJsonRows(JSON_n1ql_empty, sizeof(JSON_n1ql_empty), LCBJSP_MODE_N1QL));
136
+ ASSERT_TRUE(validateBadParse(JSON_n1ql_bad, sizeof(JSON_n1ql_bad), LCBJSP_MODE_N1QL));
137
+ }
@@ -0,0 +1,589 @@
1
+ /* Generic 'good' FTS response */
2
+
3
+ static const char JSON_fts_good[] = {
4
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
5
+ 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x37, 0x39, 0x32, 0x2c,
6
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
7
+ 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
8
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0x20,
9
+ 0x3a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
10
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x32, 0x2c, 0x0a,
11
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65,
12
+ 0x64, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x2c,
13
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a,
14
+ 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20,
15
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f,
16
+ 0x72, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x38, 0x36, 0x34, 0x38,
17
+ 0x30, 0x32, 0x31, 0x31, 0x36, 0x34, 0x36, 0x32, 0x31, 0x33, 0x2c, 0x0a,
18
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f,
19
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
20
+ 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
21
+ 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62,
22
+ 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34,
23
+ 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35,
24
+ 0x36, 0x65, 0x36, 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61,
25
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
26
+ 0x22, 0x69, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x79, 0x65,
27
+ 0x72, 0x62, 0x61, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x62, 0x72, 0x65, 0x77,
28
+ 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2d,
29
+ 0x68, 0x6f, 0x70, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x75, 0x73, 0x69, 0x6f,
30
+ 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
31
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
32
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22,
33
+ 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x37, 0x38, 0x33, 0x38, 0x33, 0x36, 0x31,
34
+ 0x36, 0x31, 0x35, 0x30, 0x31, 0x37, 0x38, 0x36, 0x2c, 0x0a, 0x20, 0x20,
35
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61,
36
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c,
37
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69,
38
+ 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65,
39
+ 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34, 0x39, 0x32,
40
+ 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35, 0x36, 0x65,
41
+ 0x36, 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61, 0x22, 0x2c,
42
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69,
43
+ 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x61, 0x72, 0x70, 0x6f, 0x6f,
44
+ 0x6e, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x6f,
45
+ 0x73, 0x74, 0x6f, 0x6e, 0x2d, 0x67, 0x6c, 0x61, 0x63, 0x69, 0x65, 0x72,
46
+ 0x5f, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x5f, 0x30, 0x39, 0x5f,
47
+ 0x77, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x31, 0x30, 0x30, 0x5f,
48
+ 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65,
49
+ 0x73, 0x5f, 0x32, 0x38, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
50
+ 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20,
51
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f,
52
+ 0x72, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x38, 0x34, 0x33,
53
+ 0x35, 0x39, 0x37, 0x38, 0x31, 0x32, 0x37, 0x37, 0x38, 0x34, 0x31, 0x2c,
54
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c,
55
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20,
56
+ 0x7b, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
57
+ 0x20, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22,
58
+ 0x62, 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f,
59
+ 0x34, 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64,
60
+ 0x35, 0x36, 0x65, 0x36, 0x5f, 0x62, 0x37, 0x66, 0x66, 0x36, 0x62, 0x36,
61
+ 0x38, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
62
+ 0x20, 0x22, 0x69, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x74, 0x72, 0x6f,
63
+ 0x65, 0x67, 0x73, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x2d,
64
+ 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x62, 0x65, 0x65, 0x72,
65
+ 0x5f, 0x33, 0x31, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x5f, 0x63, 0x69, 0x74,
66
+ 0x72, 0x61, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65,
67
+ 0x72, 0x6c, 0x79, 0x5f, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x69, 0x70, 0x61,
68
+ 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20,
69
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
70
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x20,
71
+ 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x37, 0x39, 0x36, 0x30, 0x31, 0x38, 0x32,
72
+ 0x37, 0x32, 0x37, 0x39, 0x35, 0x35, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20,
73
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74,
74
+ 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c, 0x0a,
75
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x6e,
76
+ 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65, 0x72,
77
+ 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34, 0x39, 0x32, 0x62,
78
+ 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35, 0x36, 0x65, 0x36,
79
+ 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61, 0x22, 0x2c, 0x0a,
80
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64,
81
+ 0x22, 0x20, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x79, 0x65, 0x72, 0x62, 0x61,
82
+ 0x63, 0x68, 0x65, 0x72, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x67,
83
+ 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2d, 0x65, 0x6c, 0x65,
84
+ 0x76, 0x65, 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d,
85
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20,
86
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x20,
87
+ 0x3a, 0x20, 0x22, 0x64, 0x75, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x62, 0x62,
88
+ 0x69, 0x74, 0x5f, 0x63, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x62, 0x72, 0x65,
89
+ 0x77, 0x65, 0x72, 0x79, 0x2d, 0x64, 0x75, 0x63, 0x6b, 0x5f, 0x72, 0x61,
90
+ 0x62, 0x62, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x5f, 0x61,
91
+ 0x6c, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
92
+ 0x20, 0x20, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20,
93
+ 0x22, 0x62, 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
94
+ 0x5f, 0x34, 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34,
95
+ 0x64, 0x35, 0x36, 0x65, 0x36, 0x5f, 0x62, 0x37, 0x66, 0x66, 0x36, 0x62,
96
+ 0x36, 0x38, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
97
+ 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
98
+ 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
99
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22,
100
+ 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x37, 0x31, 0x33, 0x37, 0x32, 0x36,
101
+ 0x35, 0x31, 0x31, 0x32, 0x37, 0x34, 0x35, 0x34, 0x0a, 0x20, 0x20, 0x20,
102
+ 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20,
103
+ 0x20, 0x20, 0x22, 0x74, 0x6f, 0x6f, 0x6b, 0x22, 0x20, 0x3a, 0x20, 0x38,
104
+ 0x37, 0x35, 0x37, 0x34, 0x37, 0x30, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20,
105
+ 0x22, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
106
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d,
107
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
108
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20,
109
+ 0x3a, 0x20, 0x33, 0x32, 0x37, 0x36, 0x31, 0x2c, 0x0a, 0x20, 0x20, 0x20,
110
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72,
111
+ 0x22, 0x20, 0x3a, 0x20, 0x33, 0x30, 0x37, 0x32, 0x35, 0x2c, 0x0a, 0x20,
112
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x65,
113
+ 0x6c, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72,
114
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
115
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x69, 0x73, 0x73, 0x69,
116
+ 0x6e, 0x67, 0x22, 0x20, 0x3a, 0x20, 0x39, 0x2c, 0x0a, 0x20, 0x20, 0x20,
117
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73,
118
+ 0x22, 0x20, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
119
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
120
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
121
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x37, 0x38, 0x32,
122
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
123
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20,
124
+ 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70, 0x73, 0x22, 0x0a, 0x20, 0x20, 0x20,
125
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
126
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
127
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
128
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22,
129
+ 0x20, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
130
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
131
+ 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65,
132
+ 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
133
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
134
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
135
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
136
+ 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x65,
137
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
138
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74,
139
+ 0x22, 0x20, 0x3a, 0x20, 0x33, 0x36, 0x35, 0x0a, 0x20, 0x20, 0x20, 0x20,
140
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20,
141
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b,
142
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
143
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a,
144
+ 0x20, 0x22, 0x6d, 0x61, 0x6c, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
145
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
146
+ 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x33, 0x32,
147
+ 0x37, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
148
+ 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
149
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
150
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63,
151
+ 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x31, 0x33, 0x30, 0x2c,
152
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
153
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a,
154
+ 0x20, 0x22, 0x68, 0x6f, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
155
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
156
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20,
157
+ 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20,
158
+ 0x20, 0x22, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22,
159
+ 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x38, 0x36, 0x34, 0x38, 0x30, 0x32, 0x31,
160
+ 0x31, 0x36, 0x34, 0x36, 0x32, 0x31, 0x33, 0x2c, 0x0a, 0x20, 0x20, 0x20,
161
+ 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x20, 0x3a, 0x20,
162
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x72, 0x6f,
163
+ 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
164
+ 0x20, 0x20, 0x22, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x20, 0x3a,
165
+ 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
166
+ 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a,
167
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
168
+ 0x22, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x35, 0x2c, 0x0a,
169
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
170
+ 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x64,
171
+ 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0a,
172
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20,
173
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
174
+ 0x20, 0x20, 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x20, 0x3a,
175
+ 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
176
+ 0x20, 0x22, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x35, 0x2c,
177
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x71, 0x75, 0x65, 0x72,
178
+ 0x79, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
179
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f,
180
+ 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2c,
181
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d,
182
+ 0x61, 0x74, 0x63, 0x68, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70,
183
+ 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
184
+ 0x20, 0x22, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x31,
185
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
186
+ 0x66, 0x75, 0x7a, 0x7a, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x20, 0x3a,
187
+ 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
188
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x69, 0x67, 0x68, 0x6c,
189
+ 0x69, 0x67, 0x68, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x6e, 0x75, 0x6c, 0x6c,
190
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x70,
191
+ 0x6c, 0x61, 0x69, 0x6e, 0x22, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73,
192
+ 0x65, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a
193
+ };
194
+
195
+ /* Malformed FTS response #1 */
196
+ static const char JSON_fts_bad[] = {
197
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
198
+ 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x37, 0x39, 0x32, 0x2c,
199
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
200
+ 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
201
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0x20,
202
+ 0x3a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
203
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x32, 0x2c, 0x0a,
204
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65,
205
+ 0x64, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x2c,
206
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a,
207
+ 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20,
208
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f,
209
+ 0x72, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x38, 0x36, 0x34, 0x38,
210
+ 0x30, 0x32, 0x31, 0x31, 0x36, 0x34, 0x36, 0x32, 0x31, 0x33, 0x2c, 0x0a,
211
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f,
212
+ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
213
+ 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
214
+ 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62,
215
+ 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34,
216
+ 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35,
217
+ 0x36, 0x65, 0x36, 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61,
218
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
219
+ 0x22, 0x69, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x79, 0x65,
220
+ 0x72, 0x62, 0x61, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x62, 0x72, 0x65, 0x77,
221
+ 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2d,
222
+ 0x68, 0x6f, 0x70, 0x73, 0x5f, 0x69, 0x6e, 0x66, 0x75, 0x73, 0x69, 0x6f,
223
+ 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
224
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
225
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22,
226
+ 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x37, 0x38, 0x33, 0x38, 0x33, 0x36, 0x31,
227
+ 0x36, 0x31, 0x35, 0x30, 0x31, 0x37, 0x38, 0x36, 0x2c, 0x0a, 0x20, 0x20,
228
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61,
229
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c,
230
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69,
231
+ 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65,
232
+ 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34, 0x39, 0x32,
233
+ 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35, 0x36, 0x65,
234
+ 0x36, 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61, 0x22, 0x2c,
235
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69,
236
+ 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x61, 0x72, 0x70, 0x6f, 0x6f,
237
+ 0x6e, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x6f,
238
+ 0x73, 0x74, 0x6f, 0x6e, 0x2d, 0x67, 0x6c, 0x61, 0x63, 0x69, 0x65, 0x72,
239
+ 0x5f, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x5f, 0x30, 0x39, 0x5f,
240
+ 0x77, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x31, 0x30, 0x30, 0x5f,
241
+ 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65,
242
+ 0x73, 0x5f, 0x32, 0x38, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
243
+ 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20,
244
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f,
245
+ 0x72, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x38, 0x34, 0x33,
246
+ 0x35, 0x39, 0x37, 0x38, 0x31, 0x32, 0x37, 0x37, 0x38, 0x34, 0x31, 0x2c,
247
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c,
248
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20,
249
+ 0x7b, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
250
+ 0x20, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22,
251
+ 0x62, 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f,
252
+ 0x34, 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64,
253
+ 0x35, 0x36, 0x65, 0x36, 0x5f, 0x62, 0x37, 0x66, 0x66, 0x36, 0x62, 0x36,
254
+ 0x38, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
255
+ 0x20, 0x22, 0x69, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x74, 0x72, 0x6f,
256
+ 0x65, 0x67, 0x73, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x67, 0x2d,
257
+ 0x73, 0x63, 0x72, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x62, 0x65, 0x65, 0x72,
258
+ 0x5f, 0x33, 0x31, 0x5f, 0x32, 0x30, 0x31, 0x30, 0x5f, 0x63, 0x69, 0x74,
259
+ 0x72, 0x61, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x72, 0x6f, 0x74, 0x68, 0x65,
260
+ 0x72, 0x6c, 0x79, 0x5f, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x69, 0x70, 0x61,
261
+ 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20,
262
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
263
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x20,
264
+ 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x37, 0x39, 0x36, 0x30, 0x31, 0x38, 0x32,
265
+ 0x37, 0x32, 0x37, 0x39, 0x35, 0x35, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20,
266
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74,
267
+ 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c, 0x0a,
268
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x6e,
269
+ 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65, 0x72,
270
+ 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x34, 0x39, 0x32, 0x62,
271
+ 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34, 0x64, 0x35, 0x36, 0x65, 0x36,
272
+ 0x5f, 0x38, 0x62, 0x38, 0x30, 0x39, 0x35, 0x38, 0x61, 0x22, 0x2c, 0x0a,
273
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64,
274
+ 0x22, 0x20, 0x3a, 0x20, 0x22, 0x77, 0x65, 0x79, 0x65, 0x72, 0x62, 0x61,
275
+ 0x63, 0x68, 0x65, 0x72, 0x5f, 0x62, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x67,
276
+ 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x2d, 0x65, 0x6c, 0x65,
277
+ 0x76, 0x65, 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d,
278
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20,
279
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x20,
280
+ 0x3a, 0x20, 0x22, 0x64, 0x75, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x62, 0x62,
281
+ 0x69, 0x74, 0x5f, 0x63, 0x72, 0x61, 0x66, 0x74, 0x5f, 0x62, 0x72, 0x65,
282
+ 0x77, 0x65, 0x72, 0x79, 0x2d, 0x64, 0x75, 0x63, 0x6b, 0x5f, 0x72, 0x61,
283
+ 0x62, 0x62, 0x69, 0x74, 0x5f, 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x5f, 0x61,
284
+ 0x6c, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
285
+ 0x20, 0x20, 0x22, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x20, 0x3a, 0x20,
286
+ 0x22, 0x62, 0x65, 0x65, 0x72, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
287
+ 0x5f, 0x34, 0x39, 0x32, 0x62, 0x38, 0x64, 0x66, 0x32, 0x32, 0x61, 0x34,
288
+ 0x64, 0x35, 0x36, 0x65, 0x36, 0x5f, 0x62, 0x37, 0x66, 0x66, 0x36, 0x62,
289
+ 0x36, 0x38, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
290
+ 0x20, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
291
+ 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
292
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22,
293
+ 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x36, 0x37, 0x31, 0x33, 0x37, 0x32, 0x36,
294
+ 0x35, 0x31, 0x31, 0x32, 0x37, 0x34, 0x35, 0x34, 0x0a, 0x20, 0x20, 0x20,
295
+ 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20,
296
+ 0x20, 0x20, 0x22, 0x74, 0x6f, 0x6f, 0x6b, 0x22, 0x20, 0x3a, 0x20, 0x38,
297
+ 0x37, 0x35, 0x37, 0x34, 0x37, 0x30, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20,
298
+ 0x22, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
299
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d,
300
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
301
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20,
302
+ 0x3a, 0x20, 0x33, 0x32, 0x37, 0x36, 0x31, 0x2c, 0x0a, 0x20, 0x20, 0x20,
303
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72,
304
+ 0x22, 0x20, 0x3a, 0x20, 0x33, 0x30, 0x37, 0x32, 0x35, 0x2c, 0x0a, 0x20,
305
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x65,
306
+ 0x6c, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72,
307
+ 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
308
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x69, 0x73, 0x73, 0x69,
309
+ 0x6e, 0x67, 0x22, 0x20, 0x3a, 0x20, 0x39, 0x2c, 0x0a, 0x20, 0x20, 0x20,
310
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73,
311
+ 0x22, 0x20, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
312
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
313
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
314
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x37, 0x38, 0x32,
315
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
316
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20,
317
+ 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70, 0x73, 0x22, 0x0a, 0x20, 0x20, 0x20,
318
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
319
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
320
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
321
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22,
322
+ 0x20, 0x3a, 0x20, 0x34, 0x33, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
323
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
324
+ 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65,
325
+ 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
326
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
327
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
328
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
329
+ 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x65,
330
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
331
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74,
332
+ 0x22, 0x20, 0x3a, 0x20, 0x33, 0x36, 0x35, 0x0a, 0x20, 0x20, 0x20, 0x20,
333
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20,
334
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b,
335
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
336
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a,
337
+ 0x20, 0x22, 0x6d, 0x61, 0x6c, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
338
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
339
+ 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x33, 0x32,
340
+ 0x37, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
341
+ 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
342
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
343
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63,
344
+ 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x31, 0x33, 0x30, 0x2c,
345
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
346
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a,
347
+ 0x20, 0x22, 0x68, 0x6f, 0x70, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
348
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
349
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20,
350
+ 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20,
351
+ 0x20, 0x5b, 0x72, 0x6f, 0x77, 0x73, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x22,
352
+ 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x20, 0x3a,
353
+ 0x20, 0x30, 0x2e, 0x38, 0x36, 0x34, 0x38, 0x30, 0x32, 0x31, 0x31, 0x36,
354
+ 0x34, 0x36, 0x32, 0x31, 0x33, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x72,
355
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a,
356
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x72, 0x6f, 0x6d, 0x22,
357
+ 0x20, 0x3a, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
358
+ 0x22, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
359
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74,
360
+ 0x65, 0x72, 0x6d, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20,
361
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73,
362
+ 0x69, 0x7a, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x35, 0x2c, 0x0a, 0x20, 0x20,
363
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66,
364
+ 0x69, 0x65, 0x6c, 0x64, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x64, 0x65, 0x73,
365
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x0a, 0x20, 0x20,
366
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20,
367
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
368
+ 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x6e,
369
+ 0x75, 0x6c, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
370
+ 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x35, 0x2c, 0x0a, 0x20,
371
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22,
372
+ 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
373
+ 0x20, 0x20, 0x22, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65,
374
+ 0x6e, 0x67, 0x74, 0x68, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2c, 0x0a, 0x20,
375
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x61, 0x74,
376
+ 0x63, 0x68, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70, 0x73, 0x22,
377
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
378
+ 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x31, 0x2c, 0x0a,
379
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x75,
380
+ 0x7a, 0x7a, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x30,
381
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20,
382
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67,
383
+ 0x68, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x0a,
384
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x70, 0x6c, 0x61,
385
+ 0x69, 0x6e, 0x22, 0x20, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a,
386
+ 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a
387
+ };
388
+
389
+ /* Malformed FTS response #2 */
390
+ static const char JSON_fts_bad2[] = {
391
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
392
+ 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x37, 0x39, 0x32, 0x2c,
393
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
394
+ 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
395
+ 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0x20,
396
+ 0x3a, 0x20, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
397
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x32, 0x2c, 0x0a,
398
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x61, 0x69, 0x6c, 0x65,
399
+ 0x64, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x2c,
400
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x68, 0x69, 0x74, 0x73, 0x22, 0x20, 0x3a,
401
+ 0x20, 0x5b, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x74, 0x6f, 0x6f,
402
+ 0x6b, 0x22, 0x20, 0x3a, 0x20, 0x38, 0x37, 0x35, 0x37, 0x34, 0x37, 0x30,
403
+ 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x66, 0x61, 0x63, 0x65, 0x74,
404
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
405
+ 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b,
406
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74,
407
+ 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x20, 0x3a, 0x20, 0x33, 0x32, 0x37, 0x36,
408
+ 0x31, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
409
+ 0x22, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x22, 0x20, 0x3a, 0x20, 0x33, 0x30,
410
+ 0x37, 0x32, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
411
+ 0x20, 0x20, 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x20, 0x3a, 0x20,
412
+ 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
413
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
414
+ 0x22, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x3a, 0x20,
415
+ 0x39, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
416
+ 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x20, 0x3a, 0x20, 0x5b, 0x0a,
417
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
418
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
419
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22,
420
+ 0x20, 0x3a, 0x20, 0x37, 0x38, 0x32, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
421
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
422
+ 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70,
423
+ 0x73, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
424
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
425
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20,
426
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
427
+ 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x34, 0x33, 0x32,
428
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
429
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20,
430
+ 0x3a, 0x20, 0x22, 0x62, 0x65, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20,
431
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
432
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
433
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
434
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x22, 0x20,
435
+ 0x3a, 0x20, 0x22, 0x61, 0x6c, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20,
436
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
437
+ 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20, 0x3a, 0x20, 0x33, 0x36,
438
+ 0x35, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
439
+ 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
440
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
441
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74,
442
+ 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x6d, 0x61, 0x6c, 0x74,
443
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
444
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74,
445
+ 0x22, 0x20, 0x3a, 0x20, 0x33, 0x32, 0x37, 0x0a, 0x20, 0x20, 0x20, 0x20,
446
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20,
447
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b,
448
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
449
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x20,
450
+ 0x3a, 0x20, 0x31, 0x33, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
451
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74,
452
+ 0x65, 0x72, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x22, 0x68, 0x6f, 0x70, 0x22,
453
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
454
+ 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
455
+ 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
456
+ 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x5b, 0x72, 0x6f, 0x77, 0x73,
457
+ 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x63,
458
+ 0x6f, 0x72, 0x65, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2e, 0x38, 0x36, 0x34,
459
+ 0x38, 0x30, 0x32, 0x31, 0x31, 0x36, 0x34, 0x36, 0x32, 0x31, 0x33, 0x2c,
460
+ 0x0a, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
461
+ 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
462
+ 0x22, 0x66, 0x72, 0x6f, 0x6d, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x2c, 0x0a,
463
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x61, 0x63, 0x65, 0x74,
464
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
465
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x20,
466
+ 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
467
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20, 0x3a,
468
+ 0x20, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
469
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x20,
470
+ 0x3a, 0x20, 0x22, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
471
+ 0x6f, 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
472
+ 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a,
473
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x66, 0x69, 0x65, 0x6c, 0x64,
474
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x0a, 0x20,
475
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20,
476
+ 0x3a, 0x20, 0x35, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
477
+ 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x20, 0x3a, 0x20, 0x7b, 0x0a, 0x20,
478
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x70, 0x72, 0x65,
479
+ 0x66, 0x69, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x20,
480
+ 0x3a, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
481
+ 0x20, 0x20, 0x22, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x20, 0x3a, 0x20,
482
+ 0x22, 0x68, 0x6f, 0x70, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
483
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x22,
484
+ 0x20, 0x3a, 0x20, 0x31, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
485
+ 0x20, 0x20, 0x20, 0x22, 0x66, 0x75, 0x7a, 0x7a, 0x69, 0x6e, 0x65, 0x73,
486
+ 0x73, 0x22, 0x20, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
487
+ 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x68,
488
+ 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x22, 0x20, 0x3a, 0x20,
489
+ 0x6e, 0x75, 0x6c, 0x6c, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
490
+ 0x22, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x22, 0x20, 0x3a, 0x20,
491
+ 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d,
492
+ 0x0a
493
+ };
494
+
495
+ /* Malformed N1QL response */
496
+ static const char JSON_n1ql_bad[] = {
497
+ 0x5b, 0x73, 0x6f, 0x6e, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c,
498
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
499
+ 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x2c,
500
+ 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
501
+ 0x22, 0x3a, 0x20, 0x22, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22,
502
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x65, 0x74, 0x72, 0x69,
503
+ 0x63, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
504
+ 0x20, 0x20, 0x20, 0x22, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54,
505
+ 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x37, 0x34, 0x2e, 0x36, 0x38,
506
+ 0x31, 0x30, 0x33, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
507
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x65, 0x5d, 0x2c, 0x0a, 0x20,
508
+ 0x20, 0x20, 0x20, 0x22, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a,
509
+ 0x20, 0x22, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x0a,
510
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
511
+ 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
512
+ 0x20, 0x22, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d,
513
+ 0x65, 0x22, 0x3a, 0x20, 0x22, 0x37, 0x34, 0x2e, 0x36, 0x38, 0x31, 0x30,
514
+ 0x33, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
515
+ 0x20, 0x20, 0x22, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
516
+ 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x37, 0x34, 0x2e, 0x35,
517
+ 0x37, 0x39, 0x39, 0x34, 0x39, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20,
518
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c,
519
+ 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x30, 0x2c, 0x0a,
520
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x73,
521
+ 0x75, 0x6c, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x20, 0x30, 0x0a,
522
+ 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x5d, 0x0a
523
+ };
524
+
525
+ /* N1QL response without rows */
526
+ static const char JSON_n1ql_empty[] = {
527
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65,
528
+ 0x73, 0x74, 0x49, 0x44, 0x22, 0x3a, 0x20, 0x22, 0x35, 0x33, 0x36, 0x31,
529
+ 0x65, 0x35, 0x66, 0x36, 0x2d, 0x65, 0x33, 0x34, 0x33, 0x2d, 0x34, 0x35,
530
+ 0x30, 0x34, 0x2d, 0x61, 0x31, 0x36, 0x62, 0x2d, 0x35, 0x38, 0x61, 0x66,
531
+ 0x64, 0x64, 0x66, 0x31, 0x66, 0x36, 0x66, 0x31, 0x22, 0x2c, 0x0a, 0x20,
532
+ 0x20, 0x20, 0x20, 0x22, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
533
+ 0x65, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
534
+ 0x20, 0x20, 0x22, 0x2a, 0x22, 0x3a, 0x20, 0x22, 0x2a, 0x22, 0x0a, 0x20,
535
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72,
536
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20,
537
+ 0x20, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73,
538
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x73, 0x75, 0x63,
539
+ 0x63, 0x65, 0x73, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22,
540
+ 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a,
541
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x6c, 0x61,
542
+ 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22,
543
+ 0x32, 0x32, 0x2e, 0x33, 0x31, 0x35, 0x38, 0x32, 0x33, 0x6d, 0x73, 0x22,
544
+ 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65,
545
+ 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
546
+ 0x22, 0x3a, 0x20, 0x22, 0x32, 0x32, 0x2e, 0x32, 0x36, 0x37, 0x30, 0x37,
547
+ 0x32, 0x6d, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
548
+ 0x20, 0x20, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75,
549
+ 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x30, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20,
550
+ 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53,
551
+ 0x69, 0x7a, 0x65, 0x22, 0x3a, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20,
552
+ 0x7d, 0x0a, 0x7d, 0x0a, 0x0a
553
+ };
554
+
555
+ /* N1QL response with rows */
556
+ static const char JSON_n1ql_nonempty[] = {
557
+ 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x71, 0x75, 0x65,
558
+ 0x73, 0x74, 0x49, 0x44, 0x22, 0x3a, 0x20, 0x22, 0x61, 0x38, 0x66, 0x37,
559
+ 0x64, 0x62, 0x62, 0x62, 0x2d, 0x66, 0x30, 0x35, 0x35, 0x2d, 0x34, 0x62,
560
+ 0x38, 0x33, 0x2d, 0x38, 0x39, 0x31, 0x32, 0x2d, 0x35, 0x34, 0x34, 0x31,
561
+ 0x64, 0x64, 0x63, 0x65, 0x32, 0x38, 0x31, 0x30, 0x22, 0x2c, 0x0a, 0x20,
562
+ 0x20, 0x20, 0x20, 0x22, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72,
563
+ 0x65, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
564
+ 0x20, 0x20, 0x22, 0x2a, 0x22, 0x3a, 0x20, 0x22, 0x2a, 0x22, 0x0a, 0x20,
565
+ 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72,
566
+ 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20,
567
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20,
568
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x64, 0x65,
569
+ 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x5c, 0x75, 0x30,
570
+ 0x30, 0x33, 0x63, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x28, 0x35,
571
+ 0x30, 0x20, 0x62, 0x29, 0x5c, 0x75, 0x30, 0x30, 0x33, 0x65, 0x22, 0x0a,
572
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20,
573
+ 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x73, 0x74,
574
+ 0x61, 0x74, 0x75, 0x73, 0x22, 0x3a, 0x20, 0x22, 0x73, 0x75, 0x63, 0x63,
575
+ 0x65, 0x73, 0x73, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6d,
576
+ 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20,
577
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x6c, 0x61, 0x70,
578
+ 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a, 0x20, 0x22, 0x36,
579
+ 0x2e, 0x33, 0x32, 0x33, 0x30, 0x32, 0x36, 0x6d, 0x73, 0x22, 0x2c, 0x0a,
580
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x65, 0x78, 0x65,
581
+ 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x3a,
582
+ 0x20, 0x22, 0x36, 0x2e, 0x32, 0x39, 0x38, 0x37, 0x38, 0x35, 0x6d, 0x73,
583
+ 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22,
584
+ 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22,
585
+ 0x3a, 0x20, 0x31, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
586
+ 0x20, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x7a, 0x65,
587
+ 0x22, 0x3a, 0x20, 0x36, 0x32, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a,
588
+ 0x7d, 0x0a, 0x0a
589
+ };