libcouchbase 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.gitmodules +3 -0
- data/.rspec +1 -0
- data/.travis.yml +35 -0
- data/Gemfile +4 -0
- data/LICENSE +24 -0
- data/README.md +389 -0
- data/Rakefile +75 -0
- data/ext/README.md +6 -0
- data/ext/Rakefile +20 -0
- data/ext/libcouchbase/.gitignore +130 -0
- data/ext/libcouchbase/.travis.yml +19 -0
- data/ext/libcouchbase/CMakeLists.txt +429 -0
- data/ext/libcouchbase/CONTRIBUTING.md +124 -0
- data/ext/libcouchbase/LICENSE +202 -0
- data/ext/libcouchbase/README.markdown +163 -0
- data/ext/libcouchbase/RELEASE_NOTES.markdown +2691 -0
- data/ext/libcouchbase/cmake/Modules/ConfigureDtrace.cmake +27 -0
- data/ext/libcouchbase/cmake/Modules/CopyPDB.cmake +42 -0
- data/ext/libcouchbase/cmake/Modules/DistScript.cmake +17 -0
- data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +20 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseHdrHistogram.cmake +15 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibev.cmake +73 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibevent.cmake +52 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseLibuv.cmake +56 -0
- data/ext/libcouchbase/cmake/Modules/FindCouchbaseSnappy.cmake +11 -0
- data/ext/libcouchbase/cmake/Modules/GenerateConfigDotH.cmake +29 -0
- data/ext/libcouchbase/cmake/Modules/GetLibcouchbaseFlags.cmake +133 -0
- data/ext/libcouchbase/cmake/Modules/GetPlatformCCInfo.cmake +45 -0
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +70 -0
- data/ext/libcouchbase/cmake/config-cmake.h.in +60 -0
- data/ext/libcouchbase/cmake/configure +357 -0
- data/ext/libcouchbase/cmake/defs.mk.in +8 -0
- data/ext/libcouchbase/cmake/dtrace-instr-link.pl +38 -0
- data/ext/libcouchbase/cmake/source_files.cmake +73 -0
- data/ext/libcouchbase/configure.pl +1 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.c +624 -0
- data/ext/libcouchbase/contrib/cJSON/cJSON.h +158 -0
- data/ext/libcouchbase/contrib/cbsasl/CMakeLists.txt +9 -0
- data/ext/libcouchbase/contrib/cbsasl/COPYING +202 -0
- data/ext/libcouchbase/contrib/cbsasl/include/cbsasl/cbsasl.h +217 -0
- data/ext/libcouchbase/contrib/cbsasl/src/client.c +205 -0
- data/ext/libcouchbase/contrib/cbsasl/src/common.c +46 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.c +67 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/hmac.h +33 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.c +296 -0
- data/ext/libcouchbase/contrib/cbsasl/src/cram-md5/md5.h +45 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.c +573 -0
- data/ext/libcouchbase/contrib/cbsasl/src/hash.h +15 -0
- data/ext/libcouchbase/contrib/cbsasl/src/util.h +31 -0
- data/ext/libcouchbase/contrib/cliopts/CMakeLists.txt +2 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.c +747 -0
- data/ext/libcouchbase/contrib/cliopts/cliopts.h +493 -0
- data/ext/libcouchbase/contrib/genhash/genhash.c +372 -0
- data/ext/libcouchbase/contrib/genhash/genhash.h +235 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CHANGES +157 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CMakeLists.txt +252 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/CONTRIBUTORS +37 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/LICENSE +28 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/MINIFY.sh +15 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/README +435 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/cmake/internal_utils.cmake +227 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-death-test.h +294 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-message.h +250 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h +1421 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-param-test.h.pump +487 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-printers.h +855 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-spi.h +232 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-test-part.h +179 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest-typed-test.h +259 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest.h +2291 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_pred_impl.h +358 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/gtest_prod.h +58 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-death-test-internal.h +319 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-filepath.h +206 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-internal.h +1158 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-linked_ptr.h +233 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h +5143 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util-generated.h.pump +301 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-param-util.h +619 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-port.h +1947 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-string.h +167 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h +1012 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-tuple.h.pump +339 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h +3331 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/include/gtest/internal/gtest-type-util.h.pump +297 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-all.cc +48 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-death-test.cc +1344 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-filepath.cc +382 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-internal-inl.h +1218 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-port.cc +805 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-printers.cc +363 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-test-part.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest-typed-test.cc +110 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest.cc +5015 -0
- data/ext/libcouchbase/contrib/gtest-1.7.0/src/gtest_main.cc +38 -0
- data/ext/libcouchbase/contrib/http_parser/LICENSE-MIT +23 -0
- data/ext/libcouchbase/contrib/http_parser/README.md +178 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.c +2060 -0
- data/ext/libcouchbase/contrib/http_parser/http_parser.h +321 -0
- data/ext/libcouchbase/contrib/jsonsl/LICENSE +20 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.c +1452 -0
- data/ext/libcouchbase/contrib/jsonsl/jsonsl.h +971 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/CMakeLists.txt +6 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/LICENSE +55 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp-forwards.h +255 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.cpp +4892 -0
- data/ext/libcouchbase/contrib/lcb-jsoncpp/lcb-jsoncpp.h +1961 -0
- data/ext/libcouchbase/contrib/snappy/CMakeLists.txt +8 -0
- data/ext/libcouchbase/contrib/snappy/COPYING +28 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.cc +90 -0
- data/ext/libcouchbase/contrib/snappy/snappy-c.h +138 -0
- data/ext/libcouchbase/contrib/snappy/snappy-internal.h +150 -0
- data/ext/libcouchbase/contrib/snappy/snappy-lcb-msvc.h +5 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.cc +71 -0
- data/ext/libcouchbase/contrib/snappy/snappy-sinksource.h +137 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.cc +42 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-internal.h +491 -0
- data/ext/libcouchbase/contrib/snappy/snappy-stubs-public.h +98 -0
- data/ext/libcouchbase/contrib/snappy/snappy.cc +1307 -0
- data/ext/libcouchbase/contrib/snappy/snappy.h +184 -0
- data/ext/libcouchbase/contrib/win32-defs/iocpdefs.h +133 -0
- data/ext/libcouchbase/contrib/win32-defs/mingwdefs.h +4396 -0
- data/ext/libcouchbase/contrib/win32-defs/win_stdint.h +258 -0
- data/ext/libcouchbase/example/CMakeLists.txt +37 -0
- data/ext/libcouchbase/example/README.markdown +47 -0
- data/ext/libcouchbase/example/db/db.c +167 -0
- data/ext/libcouchbase/example/db/vb.c +227 -0
- data/ext/libcouchbase/example/instancepool/main.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.cc +102 -0
- data/ext/libcouchbase/example/instancepool/pool.h +69 -0
- data/ext/libcouchbase/example/libeventdirect/main.c +148 -0
- data/ext/libcouchbase/example/mcc/mcc.cc +246 -0
- data/ext/libcouchbase/example/minimal/minimal.c +130 -0
- data/ext/libcouchbase/example/observe/observe.c +146 -0
- data/ext/libcouchbase/example/subdoc/subdoc-multi.cc +132 -0
- data/ext/libcouchbase/example/subdoc/subdoc-simple.cc +191 -0
- data/ext/libcouchbase/example/tick/tick.c +119 -0
- data/ext/libcouchbase/example/views/views-example.cc +83 -0
- data/ext/libcouchbase/include/libcouchbase/_cxxwrap.h +150 -0
- data/ext/libcouchbase/include/libcouchbase/api-legacy.h +1689 -0
- data/ext/libcouchbase/include/libcouchbase/api3.h +2 -0
- data/ext/libcouchbase/include/libcouchbase/assert.h +44 -0
- data/ext/libcouchbase/include/libcouchbase/cbft.h +109 -0
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +356 -0
- data/ext/libcouchbase/include/libcouchbase/cntl.h +937 -0
- data/ext/libcouchbase/include/libcouchbase/configuration.h.in +23 -0
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +3677 -0
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +300 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +595 -0
- data/ext/libcouchbase/include/libcouchbase/http.h +1 -0
- data/ext/libcouchbase/include/libcouchbase/iops.h +1050 -0
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +263 -0
- data/ext/libcouchbase/include/libcouchbase/kvbuf.h +132 -0
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +364 -0
- data/ext/libcouchbase/include/libcouchbase/pktfwd.h +270 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/bsdio-inl.c +367 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr-inl.c +76 -0
- data/ext/libcouchbase/include/libcouchbase/plugins/io/wsaerr.h +199 -0
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +312 -0
- data/ext/libcouchbase/include/libcouchbase/sysdefs.h +98 -0
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +643 -0
- data/ext/libcouchbase/include/libcouchbase/views.h +298 -0
- data/ext/libcouchbase/include/libcouchbase/visibility.h +65 -0
- data/ext/libcouchbase/include/memcached/COPYING +30 -0
- data/ext/libcouchbase/include/memcached/README +10 -0
- data/ext/libcouchbase/include/memcached/protocol_binary.h +1916 -0
- data/ext/libcouchbase/include/memcached/vbucket.h +42 -0
- data/ext/libcouchbase/packaging/README +7 -0
- data/ext/libcouchbase/packaging/abicheck/.gitignore +4 -0
- data/ext/libcouchbase/packaging/abicheck/Makefile +17 -0
- data/ext/libcouchbase/packaging/abicheck/README.md +27 -0
- data/ext/libcouchbase/packaging/abicheck/template.xml +3 -0
- data/ext/libcouchbase/packaging/deb/compat +1 -0
- data/ext/libcouchbase/packaging/deb/control +73 -0
- data/ext/libcouchbase/packaging/deb/copyright +10 -0
- data/ext/libcouchbase/packaging/deb/libcouchbase-dev.docs +3 -0
- data/ext/libcouchbase/packaging/deb/package.mk +31 -0
- data/ext/libcouchbase/packaging/deb/rules +46 -0
- data/ext/libcouchbase/packaging/deb/source/format +1 -0
- data/ext/libcouchbase/packaging/distinfo/README +1 -0
- data/ext/libcouchbase/packaging/distinfo/distinfo.cmake.in +4 -0
- data/ext/libcouchbase/packaging/dllversion.rc.in +39 -0
- data/ext/libcouchbase/packaging/libcouchbase.pc.in +10 -0
- data/ext/libcouchbase/packaging/nuget/libcouchbase.autopkg +76 -0
- data/ext/libcouchbase/packaging/parse-git-describe.pl +166 -0
- data/ext/libcouchbase/packaging/rpm/libcouchbase.spec.in +108 -0
- data/ext/libcouchbase/packaging/rpm/package.mk +40 -0
- data/ext/libcouchbase/plugins/io/iocp/CMakeLists.txt +9 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.c +466 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_iops.h +217 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_loop.c +295 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_timer.c +79 -0
- data/ext/libcouchbase/plugins/io/iocp/iocp_util.c +229 -0
- data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +29 -0
- data/ext/libcouchbase/plugins/io/libev/libev_io_opts.h +65 -0
- data/ext/libcouchbase/plugins/io/libev/plugin-libev.c +289 -0
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +29 -0
- data/ext/libcouchbase/plugins/io/libevent/libevent_io_opts.h +67 -0
- data/ext/libcouchbase/plugins/io/libevent/plugin-libevent.c +292 -0
- data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +42 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +212 -0
- data/ext/libcouchbase/plugins/io/libuv/libuv_io_opts.h +118 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-internal.h +148 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +648 -0
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +11 -0
- data/ext/libcouchbase/plugins/io/select/plugin-select.c +448 -0
- data/ext/libcouchbase/plugins/io/select/select_io_opts.h +39 -0
- data/ext/libcouchbase/src/README.md +103 -0
- data/ext/libcouchbase/src/aspend.h +106 -0
- data/ext/libcouchbase/src/auth.cc +74 -0
- data/ext/libcouchbase/src/auth.h +54 -0
- data/ext/libcouchbase/src/bootstrap.c +269 -0
- data/ext/libcouchbase/src/bootstrap.h +129 -0
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.c +495 -0
- data/ext/libcouchbase/src/bucketconfig/bc_file.c +347 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.c +630 -0
- data/ext/libcouchbase/src/bucketconfig/bc_http.h +82 -0
- data/ext/libcouchbase/src/bucketconfig/bc_mcraw.c +150 -0
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +681 -0
- data/ext/libcouchbase/src/bucketconfig/confmon.c +474 -0
- data/ext/libcouchbase/src/callbacks.c +378 -0
- data/ext/libcouchbase/src/cbft.cc +210 -0
- data/ext/libcouchbase/src/cntl.cc +847 -0
- data/ext/libcouchbase/src/config_static.h +159 -0
- data/ext/libcouchbase/src/connspec.cc +462 -0
- data/ext/libcouchbase/src/connspec.h +105 -0
- data/ext/libcouchbase/src/ctx-log-inl.h +27 -0
- data/ext/libcouchbase/src/dump.c +98 -0
- data/ext/libcouchbase/src/getconfig.c +100 -0
- data/ext/libcouchbase/src/gethrtime.c +109 -0
- data/ext/libcouchbase/src/handler.c +922 -0
- data/ext/libcouchbase/src/hashset.c +164 -0
- data/ext/libcouchbase/src/hashset.h +86 -0
- data/ext/libcouchbase/src/hashtable.c +75 -0
- data/ext/libcouchbase/src/hdr_timings.c +92 -0
- data/ext/libcouchbase/src/hostlist.cc +301 -0
- data/ext/libcouchbase/src/hostlist.h +171 -0
- data/ext/libcouchbase/src/http/http-priv.h +307 -0
- data/ext/libcouchbase/src/http/http.cc +633 -0
- data/ext/libcouchbase/src/http/http.h +34 -0
- data/ext/libcouchbase/src/http/http_io.cc +307 -0
- data/ext/libcouchbase/src/instance.cc +722 -0
- data/ext/libcouchbase/src/internal.h +244 -0
- data/ext/libcouchbase/src/iofactory.c +575 -0
- data/ext/libcouchbase/src/jsparse/parser.cc +519 -0
- data/ext/libcouchbase/src/jsparse/parser.h +173 -0
- data/ext/libcouchbase/src/lcbht/lcbht.c +282 -0
- data/ext/libcouchbase/src/lcbht/lcbht.h +199 -0
- data/ext/libcouchbase/src/lcbio/connect.c +557 -0
- data/ext/libcouchbase/src/lcbio/connect.h +364 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +611 -0
- data/ext/libcouchbase/src/lcbio/ctx.h +405 -0
- data/ext/libcouchbase/src/lcbio/iotable.c +290 -0
- data/ext/libcouchbase/src/lcbio/iotable.h +84 -0
- data/ext/libcouchbase/src/lcbio/ioutils.c +350 -0
- data/ext/libcouchbase/src/lcbio/ioutils.h +203 -0
- data/ext/libcouchbase/src/lcbio/lcbio.h +51 -0
- data/ext/libcouchbase/src/lcbio/manager.c +584 -0
- data/ext/libcouchbase/src/lcbio/manager.h +156 -0
- data/ext/libcouchbase/src/lcbio/protoctx.c +84 -0
- data/ext/libcouchbase/src/lcbio/rw-inl.h +115 -0
- data/ext/libcouchbase/src/lcbio/ssl.h +149 -0
- data/ext/libcouchbase/src/lcbio/timer-ng.h +179 -0
- data/ext/libcouchbase/src/lcbio/timer.c +132 -0
- data/ext/libcouchbase/src/legacy.c +430 -0
- data/ext/libcouchbase/src/list.c +144 -0
- data/ext/libcouchbase/src/list.h +127 -0
- data/ext/libcouchbase/src/logging.c +244 -0
- data/ext/libcouchbase/src/logging.h +86 -0
- data/ext/libcouchbase/src/mc/compress.c +90 -0
- data/ext/libcouchbase/src/mc/compress.h +61 -0
- data/ext/libcouchbase/src/mc/forward.c +186 -0
- data/ext/libcouchbase/src/mc/forward.h +90 -0
- data/ext/libcouchbase/src/mc/iovcursor-inl.h +279 -0
- data/ext/libcouchbase/src/mc/iovcursor.h +66 -0
- data/ext/libcouchbase/src/mc/mcreq-flush-inl.h +111 -0
- data/ext/libcouchbase/src/mc/mcreq.c +954 -0
- data/ext/libcouchbase/src/mc/mcreq.h +977 -0
- data/ext/libcouchbase/src/mcserver/mcserver.c +784 -0
- data/ext/libcouchbase/src/mcserver/mcserver.h +121 -0
- data/ext/libcouchbase/src/mcserver/negotiate.c +656 -0
- data/ext/libcouchbase/src/mcserver/negotiate.h +119 -0
- data/ext/libcouchbase/src/n1ql/ixmgmt.cc +860 -0
- data/ext/libcouchbase/src/n1ql/n1ql-internal.h +22 -0
- data/ext/libcouchbase/src/n1ql/n1ql.cc +729 -0
- data/ext/libcouchbase/src/n1ql/params.cc +215 -0
- data/ext/libcouchbase/src/netbuf/netbuf-defs.h +89 -0
- data/ext/libcouchbase/src/netbuf/netbuf-mblock.h +235 -0
- data/ext/libcouchbase/src/netbuf/netbuf.c +929 -0
- data/ext/libcouchbase/src/netbuf/netbuf.h +452 -0
- data/ext/libcouchbase/src/newconfig.c +385 -0
- data/ext/libcouchbase/src/nodeinfo.cc +194 -0
- data/ext/libcouchbase/src/operations/cbflush.c +71 -0
- data/ext/libcouchbase/src/operations/counter.c +116 -0
- data/ext/libcouchbase/src/operations/durability-cas.c +224 -0
- data/ext/libcouchbase/src/operations/durability-seqno.c +157 -0
- data/ext/libcouchbase/src/operations/durability.c +668 -0
- data/ext/libcouchbase/src/operations/durability_internal.h +199 -0
- data/ext/libcouchbase/src/operations/get.c +409 -0
- data/ext/libcouchbase/src/operations/observe-seqno.c +96 -0
- data/ext/libcouchbase/src/operations/observe.c +340 -0
- data/ext/libcouchbase/src/operations/pktfwd.c +86 -0
- data/ext/libcouchbase/src/operations/remove.c +83 -0
- data/ext/libcouchbase/src/operations/stats.c +461 -0
- data/ext/libcouchbase/src/operations/store.c +360 -0
- data/ext/libcouchbase/src/operations/subdoc.cc +510 -0
- data/ext/libcouchbase/src/operations/touch.c +81 -0
- data/ext/libcouchbase/src/packetutils.c +60 -0
- data/ext/libcouchbase/src/packetutils.h +147 -0
- data/ext/libcouchbase/src/probes.d +211 -0
- data/ext/libcouchbase/src/rdb/bigalloc.c +225 -0
- data/ext/libcouchbase/src/rdb/bigalloc.h +73 -0
- data/ext/libcouchbase/src/rdb/chunkalloc.c +174 -0
- data/ext/libcouchbase/src/rdb/libcalloc.c +94 -0
- data/ext/libcouchbase/src/rdb/rope.c +419 -0
- data/ext/libcouchbase/src/rdb/rope.h +488 -0
- data/ext/libcouchbase/src/retrychk.c +113 -0
- data/ext/libcouchbase/src/retryq.c +424 -0
- data/ext/libcouchbase/src/retryq.h +157 -0
- data/ext/libcouchbase/src/ringbuffer.c +442 -0
- data/ext/libcouchbase/src/ringbuffer.h +100 -0
- data/ext/libcouchbase/src/settings.c +95 -0
- data/ext/libcouchbase/src/settings.h +188 -0
- data/ext/libcouchbase/src/simplestring.c +211 -0
- data/ext/libcouchbase/src/simplestring.h +228 -0
- data/ext/libcouchbase/src/sllist-inl.h +197 -0
- data/ext/libcouchbase/src/sllist.h +76 -0
- data/ext/libcouchbase/src/ssl/CMakeLists.txt +23 -0
- data/ext/libcouchbase/src/ssl/ssl_c.c +415 -0
- data/ext/libcouchbase/src/ssl/ssl_common.c +454 -0
- data/ext/libcouchbase/src/ssl/ssl_e.c +408 -0
- data/ext/libcouchbase/src/ssl/ssl_iot_common.h +180 -0
- data/ext/libcouchbase/src/ssobuf.h +82 -0
- data/ext/libcouchbase/src/strcodecs/base64.c +123 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +285 -0
- data/ext/libcouchbase/src/timings.c +208 -0
- data/ext/libcouchbase/src/trace.h +105 -0
- data/ext/libcouchbase/src/utilities.c +171 -0
- data/ext/libcouchbase/src/vbucket/CMakeLists.txt +2 -0
- data/ext/libcouchbase/src/vbucket/aliases.h +35 -0
- data/ext/libcouchbase/src/vbucket/crc32.h +83 -0
- data/ext/libcouchbase/src/vbucket/hash.h +30 -0
- data/ext/libcouchbase/src/vbucket/json-inl.h +112 -0
- data/ext/libcouchbase/src/vbucket/ketama.c +66 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/global.h +32 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5.h +35 -0
- data/ext/libcouchbase/src/vbucket/rfc1321/md5c-inl.h +335 -0
- data/ext/libcouchbase/src/vbucket/vbucket.c +1543 -0
- data/ext/libcouchbase/src/views/docreq.c +194 -0
- data/ext/libcouchbase/src/views/docreq.h +83 -0
- data/ext/libcouchbase/src/views/viewreq.c +358 -0
- data/ext/libcouchbase/src/views/viewreq.h +36 -0
- data/ext/libcouchbase/src/wait.c +161 -0
- data/ext/libcouchbase/tests/CMakeLists.txt +140 -0
- data/ext/libcouchbase/tests/basic/t_base64.cc +81 -0
- data/ext/libcouchbase/tests/basic/t_ccbc103.cc +95 -0
- data/ext/libcouchbase/tests/basic/t_connstr.cc +404 -0
- data/ext/libcouchbase/tests/basic/t_creds.cc +32 -0
- data/ext/libcouchbase/tests/basic/t_ctlcodes.cc +92 -0
- data/ext/libcouchbase/tests/basic/t_hashset.cc +262 -0
- data/ext/libcouchbase/tests/basic/t_host.cc +198 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.cc +137 -0
- data/ext/libcouchbase/tests/basic/t_jsparse.h +589 -0
- data/ext/libcouchbase/tests/basic/t_list.cc +155 -0
- data/ext/libcouchbase/tests/basic/t_logger.cc +65 -0
- data/ext/libcouchbase/tests/basic/t_misc.cc +24 -0
- data/ext/libcouchbase/tests/basic/t_n1qlstrings.cc +18 -0
- data/ext/libcouchbase/tests/basic/t_netbuf.cc +446 -0
- data/ext/libcouchbase/tests/basic/t_packet.cc +222 -0
- data/ext/libcouchbase/tests/basic/t_ringbuffer.cc +278 -0
- data/ext/libcouchbase/tests/basic/t_slist.cc +429 -0
- data/ext/libcouchbase/tests/basic/t_strerror.cc +64 -0
- data/ext/libcouchbase/tests/basic/t_string.cc +112 -0
- data/ext/libcouchbase/tests/basic/t_urlencode.cc +132 -0
- data/ext/libcouchbase/tests/check-all.cc +608 -0
- data/ext/libcouchbase/tests/htparse/t_basic.cc +193 -0
- data/ext/libcouchbase/tests/ioserver/connection.cc +166 -0
- data/ext/libcouchbase/tests/ioserver/future.cc +50 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.cc +104 -0
- data/ext/libcouchbase/tests/ioserver/ioserver.h +478 -0
- data/ext/libcouchbase/tests/ioserver/socket.cc +88 -0
- data/ext/libcouchbase/tests/ioserver/ssl_connection.cc +145 -0
- data/ext/libcouchbase/tests/ioserver/threads-pthreads.cc +119 -0
- data/ext/libcouchbase/tests/ioserver/threads-win32.cc +117 -0
- data/ext/libcouchbase/tests/ioserver/threads.h +66 -0
- data/ext/libcouchbase/tests/iotests/iotests.h +15 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +524 -0
- data/ext/libcouchbase/tests/iotests/mock-environment.h +385 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.cc +67 -0
- data/ext/libcouchbase/tests/iotests/mock-unit-test.h +61 -0
- data/ext/libcouchbase/tests/iotests/serverparams.h +76 -0
- data/ext/libcouchbase/tests/iotests/t_arithmetic.cc +143 -0
- data/ext/libcouchbase/tests/iotests/t_behavior.cc +226 -0
- data/ext/libcouchbase/tests/iotests/t_configcache.cc +117 -0
- data/ext/libcouchbase/tests/iotests/t_confmon.cc +241 -0
- data/ext/libcouchbase/tests/iotests/t_durability.cc +1059 -0
- data/ext/libcouchbase/tests/iotests/t_forward.cc +110 -0
- data/ext/libcouchbase/tests/iotests/t_get.cc +512 -0
- data/ext/libcouchbase/tests/iotests/t_http.cc +438 -0
- data/ext/libcouchbase/tests/iotests/t_iops.cc +175 -0
- data/ext/libcouchbase/tests/iotests/t_lock.cc +275 -0
- data/ext/libcouchbase/tests/iotests/t_misc.cc +713 -0
- data/ext/libcouchbase/tests/iotests/t_mutate.cc +609 -0
- data/ext/libcouchbase/tests/iotests/t_n1ql.cc +270 -0
- data/ext/libcouchbase/tests/iotests/t_netfail.cc +654 -0
- data/ext/libcouchbase/tests/iotests/t_obseqno.cc +157 -0
- data/ext/libcouchbase/tests/iotests/t_regression.cc +321 -0
- data/ext/libcouchbase/tests/iotests/t_sched.cc +88 -0
- data/ext/libcouchbase/tests/iotests/t_serverops.cc +230 -0
- data/ext/libcouchbase/tests/iotests/t_smoke.cc +528 -0
- data/ext/libcouchbase/tests/iotests/t_subdoc.cc +822 -0
- data/ext/libcouchbase/tests/iotests/t_syncmode.cc +64 -0
- data/ext/libcouchbase/tests/iotests/t_views.cc +405 -0
- data/ext/libcouchbase/tests/iotests/testutil.cc +250 -0
- data/ext/libcouchbase/tests/iotests/testutil.h +163 -0
- data/ext/libcouchbase/tests/mc/mctest.h +119 -0
- data/ext/libcouchbase/tests/mc/pktmaker.h +101 -0
- data/ext/libcouchbase/tests/mc/t_alloc.cc +269 -0
- data/ext/libcouchbase/tests/mc/t_context.cc +100 -0
- data/ext/libcouchbase/tests/mc/t_flush.cc +185 -0
- data/ext/libcouchbase/tests/mc/t_forward.cc +239 -0
- data/ext/libcouchbase/tests/mc/t_ioflush.cc +102 -0
- data/ext/libcouchbase/tests/mc/t_iovcursor.cc +173 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.c +305 -0
- data/ext/libcouchbase/tests/mocksupport/procutil.h +89 -0
- data/ext/libcouchbase/tests/mocksupport/server.c +391 -0
- data/ext/libcouchbase/tests/mocksupport/server.h +72 -0
- data/ext/libcouchbase/tests/mocksupport/timeout.c +69 -0
- data/ext/libcouchbase/tests/nonio_tests.cc +23 -0
- data/ext/libcouchbase/tests/rdb/rdbtest.h +133 -0
- data/ext/libcouchbase/tests/rdb/t_basic.cc +128 -0
- data/ext/libcouchbase/tests/rdb/t_bigalloc.cc +93 -0
- data/ext/libcouchbase/tests/rdb/t_refs.cc +112 -0
- data/ext/libcouchbase/tests/socktests/socktest.cc +347 -0
- data/ext/libcouchbase/tests/socktests/socktest.h +448 -0
- data/ext/libcouchbase/tests/socktests/t_basic.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ctx.cc +73 -0
- data/ext/libcouchbase/tests/socktests/t_manager.cc +179 -0
- data/ext/libcouchbase/tests/socktests/t_putex.cc +256 -0
- data/ext/libcouchbase/tests/socktests/t_read.cc +187 -0
- data/ext/libcouchbase/tests/socktests/t_reentrant.cc +143 -0
- data/ext/libcouchbase/tests/socktests/t_ssl.cc +80 -0
- data/ext/libcouchbase/tests/socktests/t_write.cc +95 -0
- data/ext/libcouchbase/tests/start_mock.bat +15 -0
- data/ext/libcouchbase/tests/start_mock.sh +42 -0
- data/ext/libcouchbase/tests/unit_tests.cc +43 -0
- data/ext/libcouchbase/tests/vbucket/confdata/bad.json +101 -0
- data/ext/libcouchbase/tests/vbucket/confdata/full_25.json +363 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_25.json +90 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/memd_45.json +1 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_25.json +291 -0
- data/ext/libcouchbase/tests/vbucket/confdata/terse_30.json +1 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +341 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +51 -0
- data/ext/libcouchbase/tools/cbc-handlers.h +462 -0
- data/ext/libcouchbase/tools/cbc-n1qlback.cc +439 -0
- data/ext/libcouchbase/tools/cbc-pillowfight.cc +822 -0
- data/ext/libcouchbase/tools/cbc.cc +1541 -0
- data/ext/libcouchbase/tools/common/histogram.cc +43 -0
- data/ext/libcouchbase/tools/common/histogram.h +23 -0
- data/ext/libcouchbase/tools/common/my_inttypes.h +22 -0
- data/ext/libcouchbase/tools/common/options.cc +420 -0
- data/ext/libcouchbase/tools/common/options.h +81 -0
- data/ext/libcouchbase/tools/docgen/docgen.h +469 -0
- data/ext/libcouchbase/tools/docgen/loc.h +210 -0
- data/ext/libcouchbase/tools/docgen/placeholders.h +211 -0
- data/ext/libcouchbase/tools/docgen/seqgen.h +94 -0
- data/lib/libcouchbase.rb +36 -0
- data/lib/libcouchbase/bucket.rb +819 -0
- data/lib/libcouchbase/callbacks.rb +72 -0
- data/lib/libcouchbase/connection.rb +790 -0
- data/lib/libcouchbase/design_docs.rb +86 -0
- data/lib/libcouchbase/error.rb +68 -0
- data/lib/libcouchbase/ext/libcouchbase.rb +1135 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdbase.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdcounter.rb +36 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdendure.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdfts.rb +24 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdget.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdgetreplica.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdhttp.rb +58 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdn1ql.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobseqno.rb +33 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdobserve.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstore.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdstoredur.rb +45 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdsubdoc.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdverbosity.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/cmdviewquery.rb +61 -0
- data/lib/libcouchbase/ext/libcouchbase/contigbuf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st.rb +15 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st0.rb +23 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st1.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st2.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/create_st3.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/crst_u.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_st_v.rb +11 -0
- data/lib/libcouchbase/ext/libcouchbase/durability_opts_t.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/durabilityopt_sv0.rb +63 -0
- data/lib/libcouchbase/ext/libcouchbase/enums.rb +991 -0
- data/lib/libcouchbase/ext/libcouchbase/fragbuf.rb +18 -0
- data/lib/libcouchbase/ext/libcouchbase/ftshandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/histogram.rb +34 -0
- data/lib/libcouchbase/ext/libcouchbase/http_request_t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/keybuf.rb +20 -0
- data/lib/libcouchbase/ext/libcouchbase/multicmd_ctx.rb +30 -0
- data/lib/libcouchbase/ext/libcouchbase/mutation_token.rb +17 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/n1qlparams.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/respbase.rb +29 -0
- data/lib/libcouchbase/ext/libcouchbase/respcounter.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respendure.rb +49 -0
- data/lib/libcouchbase/ext/libcouchbase/respfts.rb +40 -0
- data/lib/libcouchbase/ext/libcouchbase/respget.rb +44 -0
- data/lib/libcouchbase/ext/libcouchbase/resphttp.rb +48 -0
- data/lib/libcouchbase/ext/libcouchbase/respmcversion.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respn1ql.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respobseqno.rb +52 -0
- data/lib/libcouchbase/ext/libcouchbase/respobserve.rb +41 -0
- data/lib/libcouchbase/ext/libcouchbase/respserverbase.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstats.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respstore.rb +32 -0
- data/lib/libcouchbase/ext/libcouchbase/respstoredur.rb +38 -0
- data/lib/libcouchbase/ext/libcouchbase/respsubdoc.rb +35 -0
- data/lib/libcouchbase/ext/libcouchbase/respviewquery.rb +67 -0
- data/lib/libcouchbase/ext/libcouchbase/sdentry.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/sdspec.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase/t.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf.rb +22 -0
- data/lib/libcouchbase/ext/libcouchbase/valbuf_u_buf.rb +14 -0
- data/lib/libcouchbase/ext/libcouchbase/viewhandle.rb +7 -0
- data/lib/libcouchbase/ext/libcouchbase_iocp.rb +26 -0
- data/lib/libcouchbase/ext/libcouchbase_libuv.rb +18 -0
- data/lib/libcouchbase/ext/tasks.rb +87 -0
- data/lib/libcouchbase/n1ql.rb +73 -0
- data/lib/libcouchbase/query_full_text.rb +147 -0
- data/lib/libcouchbase/query_n1ql.rb +121 -0
- data/lib/libcouchbase/query_view.rb +129 -0
- data/lib/libcouchbase/results_fiber.rb +262 -0
- data/lib/libcouchbase/results_native.rb +211 -0
- data/lib/libcouchbase/version.rb +5 -0
- data/libcouchbase.gemspec +61 -0
- data/spec/bucket_spec.rb +270 -0
- data/spec/connection_spec.rb +277 -0
- data/spec/design_docs_spec.rb +23 -0
- data/spec/error_spec.rb +26 -0
- data/spec/fts_spec.rb +129 -0
- data/spec/n1ql_spec.rb +201 -0
- data/spec/results_libuv_spec.rb +229 -0
- data/spec/results_native_spec.rb +259 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/design.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/data-0000.cbb +0 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/failover.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/meta.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/seqno.json +1 -0
- data/spec/seed/2016-10-25T043505Z/2016-10-25T043505Z-full/bucket-default/node-127.0.0.1%3A8091/snapshot_markers.json +1 -0
- data/spec/view_spec.rb +195 -0
- metadata +775 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2016 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_IXMGMT_H
|
|
19
|
+
#define LCB_IXMGMT_H
|
|
20
|
+
|
|
21
|
+
#include <libcouchbase/couchbase.h>
|
|
22
|
+
#include <libcouchbase/n1ql.h>
|
|
23
|
+
|
|
24
|
+
#ifdef __cplusplus
|
|
25
|
+
extern "C" {
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @volatile
|
|
30
|
+
*
|
|
31
|
+
* Structure representing a single index definition
|
|
32
|
+
*/
|
|
33
|
+
typedef struct {
|
|
34
|
+
/**
|
|
35
|
+
* Raw JSON returned from server.
|
|
36
|
+
* Can be used to decode fields in future versions not present within the
|
|
37
|
+
* library.
|
|
38
|
+
*
|
|
39
|
+
* This field can also be used as an input field to populate the other
|
|
40
|
+
* fields in this structure. This means that if you have a raw JSON
|
|
41
|
+
* representation of an index, you need only set this field (and
|
|
42
|
+
* `nrawjson`). The library will internally parse the raw JSON and
|
|
43
|
+
* populate the internal equivalents of the fields in this structure.
|
|
44
|
+
*
|
|
45
|
+
* Note that when using this field as an input for creating indexes, you
|
|
46
|
+
* should still set the ::flags field if you wish to set flags (e.g. in
|
|
47
|
+
* order to create a deferred-build index).
|
|
48
|
+
*/
|
|
49
|
+
const char *rawjson;
|
|
50
|
+
size_t nrawjson;
|
|
51
|
+
|
|
52
|
+
/** Name of the index. For raw JSON, use the `name` propery */
|
|
53
|
+
const char *name;
|
|
54
|
+
size_t nname;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Keyspace or "bucket" of the index. For raw JSON, use the
|
|
58
|
+
* `keyspace_id` property
|
|
59
|
+
*/
|
|
60
|
+
const char *keyspace;
|
|
61
|
+
size_t nkeyspace;
|
|
62
|
+
|
|
63
|
+
/** 'namespace'. Currently unused */
|
|
64
|
+
const char *nspace;
|
|
65
|
+
size_t nnspace;
|
|
66
|
+
|
|
67
|
+
/** Output parameter only. State of index */
|
|
68
|
+
const char *state;
|
|
69
|
+
size_t nstate;
|
|
70
|
+
|
|
71
|
+
/** Actual index text. For raw JSON use the `index_key` property.
|
|
72
|
+
* The value for this field is a properly-encoded JSON array of fields
|
|
73
|
+
* to index. e.g.
|
|
74
|
+
*
|
|
75
|
+
* @code{c}
|
|
76
|
+
* spec.fields = "[\"`name`\", \"`email`\", \"`ctime`\"]"
|
|
77
|
+
* @endcode
|
|
78
|
+
*/
|
|
79
|
+
const char *fields;
|
|
80
|
+
size_t nfields;
|
|
81
|
+
|
|
82
|
+
/**Indexing condition. If set, only field values matching this condition
|
|
83
|
+
* will be indexed */
|
|
84
|
+
const char *cond;
|
|
85
|
+
size_t ncond;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Modifiers for the index itself. This might be
|
|
89
|
+
* LCB_N1XSPEC_F_PRIMARY if the index is primary. For raw JSON,
|
|
90
|
+
* use `"is_primary":true`
|
|
91
|
+
*
|
|
92
|
+
* For creation the LCB_N1XSPEC_F_DEFER option is also accepted to
|
|
93
|
+
* indicate that the building of this index should be deferred.
|
|
94
|
+
*/
|
|
95
|
+
unsigned flags;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Type of this index, Can be LCB_N1XSPEC_T_DEFAULT for the default
|
|
99
|
+
* server type, or an explicit LCB_N1XSPEC_T_GSI or LCB_N1XSPEC_T_VIEW.
|
|
100
|
+
* When using JSON, specify `"using":"gsi"`
|
|
101
|
+
*/
|
|
102
|
+
unsigned ixtype;
|
|
103
|
+
} lcb_N1XSPEC;
|
|
104
|
+
|
|
105
|
+
/** Input/Output flag. The index is the primary index for the bucket */
|
|
106
|
+
#define LCB_N1XSPEC_F_PRIMARY 1<<16
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Input flag for creation. Defer the index building until later. This may
|
|
110
|
+
* be used to accelerate the building of multiple indexes, so that the index
|
|
111
|
+
* builder can construct all indexes by scanning items only once
|
|
112
|
+
*/
|
|
113
|
+
#define LCB_N1XSPEC_F_DEFER 1<<17
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Input for index type. It's best to just leave this value to 0 (DEFAULT)
|
|
117
|
+
* unless you know what you're doing.
|
|
118
|
+
*/
|
|
119
|
+
#define LCB_N1XSPEC_T_DEFAULT 0
|
|
120
|
+
#define LCB_N1XSPEC_T_GSI 1
|
|
121
|
+
#define LCB_N1XSPEC_T_VIEW 2
|
|
122
|
+
|
|
123
|
+
struct lcb_RESPN1XMGMT_st;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Callback for index management operations
|
|
127
|
+
* @param instance
|
|
128
|
+
* @param cbtype - set to LCB_CALLBACK_N1XMGMT
|
|
129
|
+
* @param resp the response structure
|
|
130
|
+
*/
|
|
131
|
+
typedef void (*lcb_N1XMGMTCALLBACK)(lcb_t instance,
|
|
132
|
+
int cbtype, const struct lcb_RESPN1XMGMT_st *resp);
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* @volatile
|
|
136
|
+
* Command for index management operations
|
|
137
|
+
*/
|
|
138
|
+
typedef struct {
|
|
139
|
+
/**
|
|
140
|
+
* The index to operate on. This can either be a full definition
|
|
141
|
+
* (when creating an index)
|
|
142
|
+
* or a partial definition (when listing or building
|
|
143
|
+
* indexes)
|
|
144
|
+
*/
|
|
145
|
+
lcb_N1XSPEC spec;
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Callback to be invoked when operation is complete.
|
|
149
|
+
*/
|
|
150
|
+
lcb_N1XMGMTCALLBACK callback;
|
|
151
|
+
} lcb_CMDN1XMGMT;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @volatile
|
|
155
|
+
*
|
|
156
|
+
* Response structure for index management operations
|
|
157
|
+
*/
|
|
158
|
+
typedef struct lcb_RESPN1XMGMT_st {
|
|
159
|
+
LCB_RESP_BASE
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* A list of pointers to specs. This isn't a simple array of specs because
|
|
163
|
+
* the spec structure internally is backed by additional internal data.
|
|
164
|
+
*/
|
|
165
|
+
const lcb_N1XSPEC *const *specs;
|
|
166
|
+
/** Number of specs */
|
|
167
|
+
size_t nspecs;
|
|
168
|
+
|
|
169
|
+
/** Inner N1QL response. Examine on error */
|
|
170
|
+
const lcb_RESPN1QL *inner;
|
|
171
|
+
} lcb_RESPN1XMGMT;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @volatile
|
|
175
|
+
*
|
|
176
|
+
* Retrieve a list of all indexes in the cluster. If lcb_CMDN1XMGMT::spec
|
|
177
|
+
* contains entries then the search will be limited to the appropriate criteria.
|
|
178
|
+
*/
|
|
179
|
+
LIBCOUCHBASE_API
|
|
180
|
+
lcb_error_t
|
|
181
|
+
lcb_n1x_list(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @volatile
|
|
185
|
+
*
|
|
186
|
+
* Create an index. The index can either be a primary or secondary index, and
|
|
187
|
+
* it may be created immediately or it may be deferred.
|
|
188
|
+
*/
|
|
189
|
+
LIBCOUCHBASE_API
|
|
190
|
+
lcb_error_t
|
|
191
|
+
lcb_n1x_create(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @volatile
|
|
195
|
+
* Remove an index.
|
|
196
|
+
*/
|
|
197
|
+
LIBCOUCHBASE_API
|
|
198
|
+
lcb_error_t
|
|
199
|
+
lcb_n1x_drop(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @volatile
|
|
203
|
+
*
|
|
204
|
+
* Build defered indexes. This may be used with the @ref LCB_N1XSPEC_F_DEFER
|
|
205
|
+
* option (see lcb_n1x_create()) to initiate the background creation of
|
|
206
|
+
* indexes.
|
|
207
|
+
*
|
|
208
|
+
* lcb_n1x_watchbuild may be used to wait on the status of those indexes.
|
|
209
|
+
*/
|
|
210
|
+
LIBCOUCHBASE_API
|
|
211
|
+
lcb_error_t
|
|
212
|
+
lcb_n1x_startbuild(lcb_t instance, const void *cookie, const lcb_CMDN1XMGMT *cmd);
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* @volatile
|
|
216
|
+
*
|
|
217
|
+
* Structure used for polling index building statuses
|
|
218
|
+
*/
|
|
219
|
+
typedef struct {
|
|
220
|
+
/**
|
|
221
|
+
* Input specs. This should be the specs received from lcb_n1x_startbuild()'s
|
|
222
|
+
* callback. If you are building from scratch, only the lcb_N1XSPEC::rawjson
|
|
223
|
+
* and lcb_INDEXSPEC::nrawjson need to be populated
|
|
224
|
+
*/
|
|
225
|
+
const lcb_N1XSPEC * const *specs;
|
|
226
|
+
/** Number of specs */
|
|
227
|
+
size_t nspec;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Maximum amount of time to wait (microseconds).
|
|
231
|
+
* If not specified, the default is 30 seconds (30 * 100000)
|
|
232
|
+
*/
|
|
233
|
+
lcb_U32 timeout;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* How often to check status (microseconds).
|
|
237
|
+
* Default is 500 milliseconds (500000)
|
|
238
|
+
*/
|
|
239
|
+
lcb_U32 interval;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Callback to invoke once the indexes have been built or the timeout
|
|
243
|
+
* has been reached.
|
|
244
|
+
*
|
|
245
|
+
* The callback is only invoked once.
|
|
246
|
+
*/
|
|
247
|
+
lcb_N1XMGMTCALLBACK callback;
|
|
248
|
+
} lcb_CMDN1XWATCH;
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* @volatile
|
|
252
|
+
* Poll indexes being built. This allows you to wait until the specified indexes
|
|
253
|
+
* which are being built (using lcb_n1x_startbuild()) have been fully
|
|
254
|
+
* created.
|
|
255
|
+
*/
|
|
256
|
+
LIBCOUCHBASE_API
|
|
257
|
+
lcb_error_t
|
|
258
|
+
lcb_n1x_watchbuild(lcb_t instance, const void *cookie, const lcb_CMDN1XWATCH *cmd);
|
|
259
|
+
|
|
260
|
+
#ifdef __cplusplus
|
|
261
|
+
}
|
|
262
|
+
#endif /* __cplusplus */
|
|
263
|
+
#endif /* LCB_IXMGMT_H */
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2014 Couchbase, Inc.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#ifndef LCB_KVBUF_H
|
|
19
|
+
#define LCB_KVBUF_H
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @file
|
|
23
|
+
*
|
|
24
|
+
* Low level structures used by commands for buffers.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
#ifdef __cplusplus
|
|
28
|
+
extern "C" {
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
/** @brief Flags indicating the storage policy for a buffer */
|
|
33
|
+
typedef enum {
|
|
34
|
+
LCB_KV_COPY = 0, /**< The buffer should be copied */
|
|
35
|
+
LCB_KV_CONTIG, /**< The buffer is contiguous and should not be copied */
|
|
36
|
+
LCB_KV_IOV, /**< The buffer is not contiguous and should not be copied */
|
|
37
|
+
|
|
38
|
+
/**For use within the hashkey field, indicates that the _length_
|
|
39
|
+
* of the hashkey is the vBucket ID, rather than an actual hashkey */
|
|
40
|
+
LCB_KV_VBID,
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The buffers are not contiguous (multi-part buffers) but should be
|
|
44
|
+
* copied. This avoids having to make the buffers contiguous before
|
|
45
|
+
* passing it into the library (only to have the library copy it again) */
|
|
46
|
+
LCB_KV_IOVCOPY
|
|
47
|
+
} lcb_KVBUFTYPE;
|
|
48
|
+
|
|
49
|
+
#define LCB_KV_HEADER_AND_KEY LCB_KV_CONTIG
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @brief simple buf/length structure for a contiguous series of bytes
|
|
53
|
+
*/
|
|
54
|
+
typedef struct lcb_CONTIGBUF {
|
|
55
|
+
const void *bytes;
|
|
56
|
+
/** Number of total bytes */
|
|
57
|
+
lcb_size_t nbytes;
|
|
58
|
+
} lcb_CONTIGBUF;
|
|
59
|
+
|
|
60
|
+
/** @brief Common request header for all keys */
|
|
61
|
+
typedef struct lcb_KEYBUF {
|
|
62
|
+
/**
|
|
63
|
+
* The type of key to provide. This can currently be LCB_KV_COPY (Default)
|
|
64
|
+
* to copy the key into the pipeline buffers, or LCB_KV_HEADER_AND_KEY
|
|
65
|
+
* to provide a buffer with the header storage and the key.
|
|
66
|
+
*
|
|
67
|
+
* TODO:
|
|
68
|
+
* Currently only LCB_KV_COPY should be used. LCB_KV_HEADER_AND_KEY is used
|
|
69
|
+
* internally but may be exposed later on
|
|
70
|
+
*/
|
|
71
|
+
lcb_KVBUFTYPE type;
|
|
72
|
+
lcb_CONTIGBUF contig;
|
|
73
|
+
} lcb_KEYBUF;
|
|
74
|
+
|
|
75
|
+
/**@private*/
|
|
76
|
+
#define LCB_KEYBUF_IS_EMPTY(k) (k)->contig.nbytes == 0
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @brief Initialize a contiguous request backed by a buffer which should be
|
|
80
|
+
* copied
|
|
81
|
+
* @param req the key request to initialize
|
|
82
|
+
* @param k the key to copy
|
|
83
|
+
* @param nk the size of the key
|
|
84
|
+
*/
|
|
85
|
+
#define LCB_KREQ_SIMPLE(req, k, nk) do { \
|
|
86
|
+
(req)->type = LCB_KV_COPY; \
|
|
87
|
+
(req)->contig.bytes = k; \
|
|
88
|
+
(req)->contig.nbytes = nk; \
|
|
89
|
+
} while (0);
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Structure for an IOV buffer to be supplied as a buffer. This is currently
|
|
93
|
+
* only used for value buffers
|
|
94
|
+
*/
|
|
95
|
+
typedef struct lcb_FRAGBUF {
|
|
96
|
+
/** An IOV array */
|
|
97
|
+
lcb_IOV *iov;
|
|
98
|
+
|
|
99
|
+
/** Number of elements in iov array */
|
|
100
|
+
unsigned int niov;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Total length of the items. This should be set, if known, to prevent the
|
|
104
|
+
* library from manually traversing the iov array to calculate the length.
|
|
105
|
+
*/
|
|
106
|
+
unsigned int total_length;
|
|
107
|
+
} lcb_FRAGBUF;
|
|
108
|
+
|
|
109
|
+
/** @brief Structure representing a value to be stored */
|
|
110
|
+
typedef struct lcb_VALBUF {
|
|
111
|
+
/**
|
|
112
|
+
* Value request type. This may be one of:
|
|
113
|
+
* - LCB_KV_COPY: Copy over the value into LCB's own buffers
|
|
114
|
+
* Use the 'contig' field to supply the information.
|
|
115
|
+
*
|
|
116
|
+
* - LCB_KV_CONTIG: The buffer is a contiguous chunk of value data.
|
|
117
|
+
* Use the 'contig' field to supply the information.
|
|
118
|
+
*
|
|
119
|
+
* - LCB_KV_IOV: The buffer is a series of IOV elements. Use the 'multi'
|
|
120
|
+
* field to supply the information.
|
|
121
|
+
*/
|
|
122
|
+
lcb_KVBUFTYPE vtype;
|
|
123
|
+
union {
|
|
124
|
+
lcb_CONTIGBUF contig;
|
|
125
|
+
lcb_FRAGBUF multi;
|
|
126
|
+
} u_buf;
|
|
127
|
+
} lcb_VALBUF;
|
|
128
|
+
|
|
129
|
+
#ifdef __cplusplus
|
|
130
|
+
}
|
|
131
|
+
#endif
|
|
132
|
+
#endif
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015 Couchbase, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
**/
|
|
16
|
+
|
|
17
|
+
#ifndef LCB_N1QL_API_H
|
|
18
|
+
#define LCB_N1QL_API_H
|
|
19
|
+
#include <libcouchbase/couchbase.h>
|
|
20
|
+
#include <libcouchbase/api3.h>
|
|
21
|
+
|
|
22
|
+
#ifdef __cplusplus
|
|
23
|
+
extern "C" {
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @ingroup lcb-public-api
|
|
28
|
+
* @defgroup lcb-n1ql-api N1QL
|
|
29
|
+
* @brief Execute N1QL queries and receive resultant rows
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @addtogroup lcb-n1ql-api
|
|
34
|
+
* @{
|
|
35
|
+
*/
|
|
36
|
+
typedef struct lcb_RESPN1QL lcb_RESPN1QL;
|
|
37
|
+
typedef struct lcb_CMDN1QL lcb_CMDN1QL;
|
|
38
|
+
typedef struct lcb_N1QLREQ* lcb_N1QLHANDLE;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Callback to be invoked for each row
|
|
42
|
+
* @param The instance
|
|
43
|
+
* @param Callback type. This is set to @ref LCB_CALLBACK_N1QL
|
|
44
|
+
* @param The response.
|
|
45
|
+
*/
|
|
46
|
+
typedef void (*lcb_N1QLCALLBACK)(lcb_t, int, const lcb_RESPN1QL*);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @name N1QL Parameters
|
|
50
|
+
*
|
|
51
|
+
* The following APIs simply provide wrappers for creating the proper HTTP
|
|
52
|
+
* form parameters for N1QL requests. The general flow is to create a
|
|
53
|
+
* parameters (@ref lcb_N1QLPARAMS) object, set various options and properties
|
|
54
|
+
* on it, and populate an @ref lcb_CMDN1QL object using the lcb_n1p_mkcmd()
|
|
55
|
+
* function.
|
|
56
|
+
*
|
|
57
|
+
* @{
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Opaque object representing N1QL parameters.
|
|
62
|
+
* This object is created via lcb_n1p_new(), may be cleared
|
|
63
|
+
* (for use with another query) via lcb_n1p_reset(), and may be freed via
|
|
64
|
+
* lcb_n1p_free().
|
|
65
|
+
*/
|
|
66
|
+
typedef struct lcb_N1QLPARAMS_st lcb_N1QLPARAMS;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Create a new N1QL Parameters object. The returned object is an opaque
|
|
70
|
+
* pointer which may be used to set various properties on a N1QL query. This
|
|
71
|
+
* may then be used to populate relevant fields of an @ref lcb_CMDN1QL
|
|
72
|
+
* structure.
|
|
73
|
+
*/
|
|
74
|
+
LIBCOUCHBASE_API
|
|
75
|
+
lcb_N1QLPARAMS *
|
|
76
|
+
lcb_n1p_new(void);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Reset the parameters structure so that it may be reused for a subsequent
|
|
80
|
+
* query. Internally this resets the buffer positions to 0, but does not free
|
|
81
|
+
* them, making this function optimal for issusing subsequent queries.
|
|
82
|
+
* @param params the object to reset
|
|
83
|
+
*/
|
|
84
|
+
LIBCOUCHBASE_API
|
|
85
|
+
void
|
|
86
|
+
lcb_n1p_reset(lcb_N1QLPARAMS *params);
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Free the parameters structure. This should be done when it is no longer
|
|
90
|
+
* needed
|
|
91
|
+
* @param params the object to reset
|
|
92
|
+
*/
|
|
93
|
+
LIBCOUCHBASE_API
|
|
94
|
+
void
|
|
95
|
+
lcb_n1p_free(lcb_N1QLPARAMS *params);
|
|
96
|
+
|
|
97
|
+
/** Query is a statement string */
|
|
98
|
+
#define LCB_N1P_QUERY_STATEMENT 1
|
|
99
|
+
|
|
100
|
+
/** @private */
|
|
101
|
+
#define LCB_N1P_QUERY_PREPARED 2
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Sets the actual statement to be executed
|
|
105
|
+
* @param params the params object
|
|
106
|
+
* @param qstr the query string (either N1QL statement or prepared JSON)
|
|
107
|
+
* @param nqstr the length of the string. Set to -1 if NUL-terminated
|
|
108
|
+
* @param type the type of statement. Should be ::LCB_N1P_QUERY_STATEMENT,
|
|
109
|
+
* currently.
|
|
110
|
+
*/
|
|
111
|
+
LIBCOUCHBASE_API
|
|
112
|
+
lcb_error_t
|
|
113
|
+
lcb_n1p_setquery(lcb_N1QLPARAMS *params, const char *qstr, size_t nqstr, int type);
|
|
114
|
+
|
|
115
|
+
#define lcb_n1p_setstmtz(params, qstr) \
|
|
116
|
+
lcb_n1p_setquery(params, qstr, -1, LCB_N1P_QUERY_STATEMENT)
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Sets a named argument for the query.
|
|
120
|
+
* @param params the object
|
|
121
|
+
* @param name The argument name (e.g. `$age`)
|
|
122
|
+
* @param n_name
|
|
123
|
+
* @param value The argument value (e.g. `42`)
|
|
124
|
+
* @param n_value
|
|
125
|
+
*/
|
|
126
|
+
LIBCOUCHBASE_API
|
|
127
|
+
lcb_error_t
|
|
128
|
+
lcb_n1p_namedparam(lcb_N1QLPARAMS *params, const char *name, size_t n_name,
|
|
129
|
+
const char *value, size_t n_value);
|
|
130
|
+
|
|
131
|
+
#define lcb_n1p_namedparamz(params, name, value) \
|
|
132
|
+
lcb_n1p_namedparam(params, name, -1, value, -1)
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Adds a _positional_ argument for the query
|
|
136
|
+
* @param params the params object
|
|
137
|
+
* @param value the argument
|
|
138
|
+
* @param n_value the length of the argument.
|
|
139
|
+
*/
|
|
140
|
+
LIBCOUCHBASE_API
|
|
141
|
+
lcb_error_t
|
|
142
|
+
lcb_n1p_posparam(lcb_N1QLPARAMS *params, const char *value, size_t n_value);
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Set a query option
|
|
146
|
+
* @param params the params object
|
|
147
|
+
* @param name the name of the option
|
|
148
|
+
* @param n_name
|
|
149
|
+
* @param value the value of the option
|
|
150
|
+
* @param n_value
|
|
151
|
+
*/
|
|
152
|
+
LIBCOUCHBASE_API
|
|
153
|
+
lcb_error_t
|
|
154
|
+
lcb_n1p_setopt(lcb_N1QLPARAMS *params, const char *name, size_t n_name,
|
|
155
|
+
const char *value, size_t n_value);
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Convenience function to set a string parameter with a string value
|
|
159
|
+
* @param params the parameter object
|
|
160
|
+
* @param key the NUL-terminated option name
|
|
161
|
+
* @param value the NUL-terminated option value
|
|
162
|
+
*/
|
|
163
|
+
#define lcb_n1p_setoptz(params, key, value) \
|
|
164
|
+
lcb_n1p_setopt(params, key, -1, value, -1)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
/** No consistency constraints */
|
|
168
|
+
#define LCB_N1P_CONSISTENCY_NONE 0
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* This is implicitly set by the lcb_n1p_synctok() family of functions. This
|
|
172
|
+
* will ensure that mutations up to the vector indicated by the mutation token
|
|
173
|
+
* passed to lcb_n1p_synctok() are used.
|
|
174
|
+
*/
|
|
175
|
+
#define LCB_N1P_CONSISTENCY_RYOW 1
|
|
176
|
+
|
|
177
|
+
/** Refresh the snapshot for each request */
|
|
178
|
+
#define LCB_N1P_CONSISTENCY_REQUEST 2
|
|
179
|
+
|
|
180
|
+
/** Refresh the snapshot for each statement */
|
|
181
|
+
#define LCB_N1P_CONSISTENCY_STATEMENT 3
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Sets the consistency mode for the request.
|
|
185
|
+
* By default results are read from a potentially stale snapshot of the data.
|
|
186
|
+
* This may be good for most cases; however at times you want the absolutely
|
|
187
|
+
* most recent data.
|
|
188
|
+
* @param params the parameters object
|
|
189
|
+
* @param mode one of the `LCB_N1P_CONSISTENT_*` constants.
|
|
190
|
+
*/
|
|
191
|
+
LIBCOUCHBASE_API
|
|
192
|
+
lcb_error_t
|
|
193
|
+
lcb_n1p_setconsistency(lcb_N1QLPARAMS *params, int mode);
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Indicate that the query should synchronize its internal snapshot to reflect
|
|
197
|
+
* the changes indicated by the given mutation token (`ss`).
|
|
198
|
+
* @param params the parameters object
|
|
199
|
+
* @param keyspace the keyspace (or bucket name) which this mutation token
|
|
200
|
+
* pertains to
|
|
201
|
+
* @param st the mutation token
|
|
202
|
+
*/
|
|
203
|
+
LIBCOUCHBASE_API
|
|
204
|
+
lcb_error_t
|
|
205
|
+
lcb_n1p_setconsistent_token(lcb_N1QLPARAMS *params,
|
|
206
|
+
const char *keyspace, const lcb_MUTATION_TOKEN *st);
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Indicate that the query should synchronize its internal snapshot to reflect
|
|
210
|
+
* any past changes made by the given instance `instance`.
|
|
211
|
+
*
|
|
212
|
+
* This iterates over all the vbuckets for the given instance and inserts
|
|
213
|
+
* the relevant mutation token, using @ref lcb_get_mutation_token
|
|
214
|
+
*/
|
|
215
|
+
LIBCOUCHBASE_API
|
|
216
|
+
lcb_error_t
|
|
217
|
+
lcb_n1p_setconsistent_handle(lcb_N1QLPARAMS *params, lcb_t instance);
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Encodes the request and returns it as a string. The string is valid
|
|
221
|
+
* until the next call to the params function.
|
|
222
|
+
* @param params the parameter object
|
|
223
|
+
* @param[out] rc an error code if there was an issue in encoding
|
|
224
|
+
* @return the NUL-terminated query string.
|
|
225
|
+
*
|
|
226
|
+
* @note Calling this function regenerates the query string internally,
|
|
227
|
+
* and is implicitly called by lcb_n1p_mkcmd().
|
|
228
|
+
*/
|
|
229
|
+
LIBCOUCHBASE_API
|
|
230
|
+
const char *
|
|
231
|
+
lcb_n1p_encode(lcb_N1QLPARAMS *params, lcb_error_t *rc);
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Populates the given low-level lcb_CMDN1QL structure with the relevant fields
|
|
235
|
+
* from the params structure. If this function returns successfuly, you must
|
|
236
|
+
* ensure that the params object is not modified until the command is
|
|
237
|
+
* submitted.
|
|
238
|
+
*
|
|
239
|
+
* @note
|
|
240
|
+
* This may also set some lcb_CMDN1QL::cmdflags fields. If setting your own
|
|
241
|
+
* flags, ensure that those flags do not replace the existing ones set by
|
|
242
|
+
* this function.
|
|
243
|
+
*/
|
|
244
|
+
LIBCOUCHBASE_API
|
|
245
|
+
lcb_error_t
|
|
246
|
+
lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd);
|
|
247
|
+
|
|
248
|
+
/**@}*/
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* @name Low-level N1QL interface
|
|
252
|
+
* @{
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Prepare and cache the query if required. This may be used on frequently
|
|
257
|
+
* issued queries, so they perform better.
|
|
258
|
+
*/
|
|
259
|
+
#define LCB_CMDN1QL_F_PREPCACHE 1<<16
|
|
260
|
+
|
|
261
|
+
/** @private The lcb_CMDN1QL::query member is an internal JSON structure */
|
|
262
|
+
#define LCB_CMDN1QL_F_JSONQUERY 1<<17
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Command structure for N1QL queries. Typically an application will use the
|
|
266
|
+
* lcb_N1QLPARAMS structure to populate the #query and #content_type fields.
|
|
267
|
+
*
|
|
268
|
+
* The #callback field must be specified, and indicates the function the
|
|
269
|
+
* library should call when more response data has arrived.
|
|
270
|
+
*/
|
|
271
|
+
struct lcb_CMDN1QL {
|
|
272
|
+
lcb_U32 cmdflags;
|
|
273
|
+
/**Query to be placed in the POST request. The library will not perform
|
|
274
|
+
* any conversions or validation on this string, so it is up to the user
|
|
275
|
+
* (or wrapping library) to ensure that the string is well formed.
|
|
276
|
+
*
|
|
277
|
+
* If using the @ref lcb_N1QLPARAMS structure, the lcb_n1p_mkcmd() function
|
|
278
|
+
* will properly populate this field.
|
|
279
|
+
*
|
|
280
|
+
* In general the string should either be JSON (in which case, the
|
|
281
|
+
* #content_type field should be `application/json`) or url-encoded
|
|
282
|
+
* (in which case the #content_type field should be
|
|
283
|
+
* `application/x-www-form-urlencoded`)
|
|
284
|
+
*/
|
|
285
|
+
const char *query;
|
|
286
|
+
|
|
287
|
+
/** Length of the query data */
|
|
288
|
+
size_t nquery;
|
|
289
|
+
|
|
290
|
+
/** Ignored since version 2.5.3 */
|
|
291
|
+
const char *host;
|
|
292
|
+
|
|
293
|
+
/** Ignored since version 2.5.3 */
|
|
294
|
+
const char *content_type;
|
|
295
|
+
|
|
296
|
+
/** Callback to be invoked for each row */
|
|
297
|
+
lcb_N1QLCALLBACK callback;
|
|
298
|
+
|
|
299
|
+
/**Request handle. Will be set to the handle which may be passed to
|
|
300
|
+
* lcb_n1ql_cancel() */
|
|
301
|
+
lcb_N1QLHANDLE *handle;
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Response for a N1QL query. This is delivered in the @ref lcb_N1QLCALLBACK
|
|
306
|
+
* callback function for each result row received. The callback is also called
|
|
307
|
+
* one last time when all
|
|
308
|
+
*/
|
|
309
|
+
struct lcb_RESPN1QL {
|
|
310
|
+
#ifndef __LCB_DOXYGEN__
|
|
311
|
+
LCB_RESP_BASE
|
|
312
|
+
#else
|
|
313
|
+
lcb_U16 rflags; /**< Flags for response structure */
|
|
314
|
+
#endif
|
|
315
|
+
|
|
316
|
+
/**Current result row. If #rflags has the ::LCB_RESP_F_FINAL bit set, then
|
|
317
|
+
* this field does not contain the actual row, but the remainder of the
|
|
318
|
+
* data not included with the resultset; e.g. the JSON surrounding
|
|
319
|
+
* the "results" field with any errors or metadata for the response.
|
|
320
|
+
*/
|
|
321
|
+
const char *row;
|
|
322
|
+
/** Length of the row */
|
|
323
|
+
size_t nrow;
|
|
324
|
+
/** Raw HTTP response, if applicable */
|
|
325
|
+
const lcb_RESPHTTP *htresp;
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* @volatile
|
|
330
|
+
*
|
|
331
|
+
* Execute a N1QL query.
|
|
332
|
+
*
|
|
333
|
+
* This function will send the query to a query server in the cluster
|
|
334
|
+
* and will invoke the callback (lcb_CMDN1QL::callback) for each result returned.
|
|
335
|
+
*
|
|
336
|
+
* @param instance The instance
|
|
337
|
+
* @param cookie Pointer to application data
|
|
338
|
+
* @param cmd the command
|
|
339
|
+
* @return Scheduling success or failure.
|
|
340
|
+
*/
|
|
341
|
+
LIBCOUCHBASE_API
|
|
342
|
+
lcb_error_t
|
|
343
|
+
lcb_n1ql_query(lcb_t instance, const void *cookie, const lcb_CMDN1QL *cmd);
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Cancels an in-progress request. This will ensure that further callbacks
|
|
348
|
+
* for the given request are not delivered.
|
|
349
|
+
*
|
|
350
|
+
* @param instance the instance
|
|
351
|
+
* @param handle the handle for the request. This is obtained during the
|
|
352
|
+
* request as an 'out' parameter (see lcb_CMDN1QL::handle)
|
|
353
|
+
*/
|
|
354
|
+
LIBCOUCHBASE_API
|
|
355
|
+
void
|
|
356
|
+
lcb_n1ql_cancel(lcb_t instance, lcb_N1QLHANDLE handle);
|
|
357
|
+
/**@}*/
|
|
358
|
+
|
|
359
|
+
/**@}*/
|
|
360
|
+
|
|
361
|
+
#ifdef __cplusplus
|
|
362
|
+
}
|
|
363
|
+
#endif
|
|
364
|
+
#endif
|