libcouchbase 1.3.0 → 1.3.2
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 +5 -5
- data/.travis.yml +2 -2
- data/ext/libcouchbase/CMakeLists.txt +51 -25
- data/ext/libcouchbase/CONTRIBUTING.md +46 -65
- data/ext/libcouchbase/RELEASE_NOTES.markdown +163 -0
- data/ext/libcouchbase/cmake/Modules/DownloadLcbDep.cmake +9 -11
- data/ext/libcouchbase/cmake/Modules/FindProfiler.cmake +16 -0
- data/ext/libcouchbase/cmake/Modules/GetVersionInfo.cmake +6 -6
- data/ext/libcouchbase/cmake/config-cmake.h.in +2 -0
- data/ext/libcouchbase/cmake/configure +16 -0
- data/ext/libcouchbase/example/CMakeLists.txt +17 -2
- data/ext/libcouchbase/example/analytics/.gitignore +1 -0
- data/ext/libcouchbase/example/analytics/analytics.c +158 -0
- data/ext/libcouchbase/example/analytics/build-queries.rb +34 -0
- data/ext/libcouchbase/example/analytics/cJSON.c +1 -0
- data/ext/libcouchbase/example/analytics/cJSON.h +1 -0
- data/ext/libcouchbase/example/analytics/queries.h +113 -0
- data/ext/libcouchbase/example/analytics/queries/00-show-dataverse.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/01-setup-dataset-breweries.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/02-setup-dataset-beers.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/03-initiate-shadow.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/04-list-datasets.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/05-count-breweries.json +5 -0
- data/ext/libcouchbase/example/analytics/queries/06-first-brewery.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/07-key-based-lookup.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/08-exact-match-lookup.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/09-exact-match-lookup-different-shape.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/10-other-query-filters.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/11-equijoin.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/12-equijoin-select-star.json +10 -0
- data/ext/libcouchbase/example/analytics/queries/13-ansi-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/14-join-select-values.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/15-nested-outer-join.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/16-theta-join.json +8 -0
- data/ext/libcouchbase/example/analytics/queries/17-existential-quantification.json +9 -0
- data/ext/libcouchbase/example/analytics/queries/18-universal-quantification.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/19-simple-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/20-simple-aggregation-unwrapped-value.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/21-simple-aggregation-explicit.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/22-grouping-and-aggregation.json +6 -0
- data/ext/libcouchbase/example/analytics/queries/23-grouping-and-aggregation-with-hint.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/24-grouping-and-limits.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/25-named-parameters.json +7 -0
- data/ext/libcouchbase/example/analytics/queries/26-positional-parameters.json +7 -0
- data/ext/libcouchbase/example/crypto/common_provider.c +2 -0
- data/ext/libcouchbase/example/crypto/common_provider.h +2 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_decrypt.c +5 -0
- data/ext/libcouchbase/example/crypto/openssl_symmetric_encrypt.c +0 -1
- data/ext/libcouchbase/example/crypto/openssl_symmetric_provider.c +16 -26
- data/ext/libcouchbase/example/db/db.c +10 -6
- data/ext/libcouchbase/example/fts/.gitignore +1 -0
- data/ext/libcouchbase/example/fts/build-queries.rb +33 -0
- data/ext/libcouchbase/example/fts/fts.c +142 -0
- data/ext/libcouchbase/example/fts/queries.h +61 -0
- data/ext/libcouchbase/example/fts/queries/00-simple-text-query.json +12 -0
- data/ext/libcouchbase/example/fts/queries/01-simple-text-query-on-non-default-index.json +9 -0
- data/ext/libcouchbase/example/fts/queries/02-simple-text-query-on-stored-field.json +13 -0
- data/ext/libcouchbase/example/fts/queries/03-match-query-with-facet.json +19 -0
- data/ext/libcouchbase/example/fts/queries/04-docid-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/05-unanalyzed-term-query-with-fuzziness-level-of-0.json +13 -0
- data/ext/libcouchbase/example/fts/queries/06-unanalyzed-term-query-with-fuzziness-level-of-2.json +14 -0
- data/ext/libcouchbase/example/fts/queries/07-match-phrase-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/08-phrase-query.json +16 -0
- data/ext/libcouchbase/example/fts/queries/09-query-string-query.json +9 -0
- data/ext/libcouchbase/example/fts/queries/10-conjunction-query.json +21 -0
- data/ext/libcouchbase/example/fts/queries/11-wild-card-query.json +13 -0
- data/ext/libcouchbase/example/fts/queries/12-numeric-range-query.json +11 -0
- data/ext/libcouchbase/example/fts/queries/13-regexp-query.json +13 -0
- data/ext/libcouchbase/example/minimal/.gitignore +1 -0
- data/ext/libcouchbase/example/minimal/query.c +185 -0
- data/ext/libcouchbase/example/subdoc/subdoc-xattrs.c +2 -2
- data/ext/libcouchbase/example/tracing/cJSON.c +1 -1
- data/ext/libcouchbase/example/tracing/cJSON.h +1 -1
- data/ext/libcouchbase/include/libcouchbase/cbft.h +38 -4
- data/ext/libcouchbase/include/libcouchbase/cntl-private.h +8 -97
- data/ext/libcouchbase/include/libcouchbase/cntl.h +288 -8
- data/ext/libcouchbase/include/libcouchbase/couchbase.h +47 -10
- data/ext/libcouchbase/include/libcouchbase/crypto.h +214 -48
- data/ext/libcouchbase/include/libcouchbase/deprecated.h +12 -0
- data/ext/libcouchbase/include/libcouchbase/error.h +33 -2
- data/ext/libcouchbase/include/libcouchbase/ixmgmt.h +1 -1
- data/ext/libcouchbase/include/libcouchbase/n1ql.h +87 -13
- data/ext/libcouchbase/include/libcouchbase/subdoc.h +3 -7
- data/ext/libcouchbase/include/libcouchbase/tracing.h +174 -56
- data/ext/libcouchbase/include/libcouchbase/vbucket.h +21 -1
- data/ext/libcouchbase/include/libcouchbase/views.h +49 -4
- data/ext/libcouchbase/packaging/deb/control +2 -3
- data/ext/libcouchbase/packaging/parse-git-describe.pl +1 -1
- data/ext/libcouchbase/plugins/io/libev/CMakeLists.txt +7 -5
- data/ext/libcouchbase/plugins/io/libevent/CMakeLists.txt +7 -5
- data/ext/libcouchbase/plugins/io/libuv/CMakeLists.txt +14 -12
- data/ext/libcouchbase/plugins/io/libuv/libuv_compat.h +3 -0
- data/ext/libcouchbase/plugins/io/libuv/plugin-libuv.c +14 -6
- data/ext/libcouchbase/plugins/io/select/CMakeLists.txt +7 -5
- data/ext/libcouchbase/src/bootstrap.cc +6 -1
- data/ext/libcouchbase/src/bucketconfig/bc_cccp.cc +2 -7
- data/ext/libcouchbase/src/bucketconfig/bc_file.cc +1 -1
- data/ext/libcouchbase/src/bucketconfig/bc_http.cc +4 -11
- data/ext/libcouchbase/src/bucketconfig/clconfig.h +29 -36
- data/ext/libcouchbase/src/bucketconfig/confmon.cc +4 -2
- data/ext/libcouchbase/src/cntl.cc +181 -151
- data/ext/libcouchbase/src/config_static.h +1 -1
- data/ext/libcouchbase/src/connspec.cc +5 -1
- data/ext/libcouchbase/src/connspec.h +3 -1
- data/ext/libcouchbase/src/crypto.cc +93 -80
- data/ext/libcouchbase/src/dns-srv.cc +1 -1
- data/ext/libcouchbase/src/handler.cc +0 -1
- data/ext/libcouchbase/src/http/http-priv.h +1 -0
- data/ext/libcouchbase/src/http/http.cc +1 -2
- data/ext/libcouchbase/src/instance.cc +21 -2
- data/ext/libcouchbase/src/internal.h +1 -0
- data/ext/libcouchbase/src/lcbio/ctx.c +24 -3
- data/ext/libcouchbase/src/lcbio/ioutils.cc +1 -1
- data/ext/libcouchbase/src/lcbio/rw-inl.h +22 -1
- data/ext/libcouchbase/src/lcbio/ssl.h +2 -0
- data/ext/libcouchbase/src/mc/compress.cc +18 -11
- data/ext/libcouchbase/src/mc/mcreq.c +2 -0
- data/ext/libcouchbase/src/mc/mcreq.h +1 -1
- data/ext/libcouchbase/src/mcserver/mcserver.cc +163 -6
- data/ext/libcouchbase/src/mcserver/negotiate.cc +17 -7
- data/ext/libcouchbase/src/n1ql/n1ql.cc +12 -3
- data/ext/libcouchbase/src/newconfig.cc +4 -3
- data/ext/libcouchbase/src/nodeinfo.cc +1 -7
- data/ext/libcouchbase/src/operations/observe.cc +1 -0
- data/ext/libcouchbase/src/operations/ping.cc +5 -3
- data/ext/libcouchbase/src/retryq.cc +22 -0
- data/ext/libcouchbase/src/retryq.h +2 -1
- data/ext/libcouchbase/src/rnd.cc +5 -12
- data/ext/libcouchbase/src/settings.c +4 -7
- data/ext/libcouchbase/src/settings.h +6 -2
- data/ext/libcouchbase/src/strcodecs/base64.c +59 -0
- data/ext/libcouchbase/src/strcodecs/strcodecs.h +2 -0
- data/ext/libcouchbase/src/trace.h +2 -2
- data/ext/libcouchbase/src/tracing/span.cc +177 -45
- data/ext/libcouchbase/src/tracing/threshold_logging_tracer.cc +70 -28
- data/ext/libcouchbase/src/tracing/tracing-internal.h +33 -48
- data/ext/libcouchbase/src/vbucket/vbucket.c +146 -30
- data/ext/libcouchbase/src/wait.cc +1 -1
- data/ext/libcouchbase/tests/CMakeLists.txt +13 -4
- data/ext/libcouchbase/tests/iotests/mock-environment.cc +1 -1
- data/ext/libcouchbase/tests/iotests/t_misc.cc +2 -2
- data/ext/libcouchbase/tests/iotests/t_views.cc +1 -1
- data/ext/libcouchbase/tests/iotests/testutil.cc +3 -2
- data/ext/libcouchbase/tests/vbucket/confdata/map_node_present_nodesext_missing_nodes.json +94 -0
- data/ext/libcouchbase/tests/vbucket/t_config.cc +15 -0
- data/ext/libcouchbase/tools/CMakeLists.txt +11 -6
- data/ext/libcouchbase/tools/cbc-handlers.h +9 -0
- data/ext/libcouchbase/tools/cbc-proxy.cc +1 -1
- data/ext/libcouchbase/tools/cbc.cc +33 -5
- data/ext/libcouchbase/tools/common/options.cc +1 -1
- data/ext/libcouchbase/tools/extract-packets.rb +110 -0
- data/lib/libcouchbase/connection.rb +13 -5
- data/lib/libcouchbase/ext/tasks.rb +1 -1
- data/lib/libcouchbase/version.rb +1 -1
- metadata +62 -7
|
@@ -294,6 +294,18 @@ typedef enum {
|
|
|
294
294
|
LCB_HTTP_STATUS_INSUFFICIENT_STORAGE = 507
|
|
295
295
|
} lcb_http_status_t;
|
|
296
296
|
|
|
297
|
+
/**
|
|
298
|
+
* @deprecated
|
|
299
|
+
*/
|
|
300
|
+
typedef enum {
|
|
301
|
+
/* encryption (e.g. private key for assymetric ciphers) */
|
|
302
|
+
LCBCRYPTO_KEY_ENCRYPT = 0,
|
|
303
|
+
/* decryption (e.g. private key for assymetric ciphers) */
|
|
304
|
+
LCBCRYPTO_KEY_DECRYPT = 1,
|
|
305
|
+
LCBCRYPTO_KEY__MAX
|
|
306
|
+
} lcbcrypto_KEYTYPE;
|
|
307
|
+
|
|
308
|
+
|
|
297
309
|
#ifdef __cplusplus
|
|
298
310
|
}
|
|
299
311
|
#endif
|
|
@@ -460,87 +460,118 @@ typedef enum {
|
|
|
460
460
|
X(LCB_MUTATION_LOST, 0x3E, LCB_ERRTYPE_SRVGEN,\
|
|
461
461
|
"The given mutation has been permanently lost due to the node failing " \
|
|
462
462
|
"before replication") \
|
|
463
|
+
/** Sub-document path does not exist */ \
|
|
463
464
|
X(LCB_SUBDOC_PATH_ENOENT, 0x3F, \
|
|
464
465
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
465
466
|
"Sub-document path does not exist") \
|
|
467
|
+
/** Type of element in sub-document path conflicts with type in document */ \
|
|
466
468
|
X(LCB_SUBDOC_PATH_MISMATCH, 0x40,\
|
|
467
469
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
468
470
|
"Type of element in sub-document path conflicts with type in document") \
|
|
471
|
+
/** Malformed sub-document path */ \
|
|
469
472
|
X(LCB_SUBDOC_PATH_EINVAL, 0x41, \
|
|
470
473
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
471
474
|
"Malformed sub-document path") \
|
|
475
|
+
/** Sub-document contains too many components */ \
|
|
472
476
|
X(LCB_SUBDOC_PATH_E2BIG, 0x42, \
|
|
473
477
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
474
478
|
"Sub-document contains too many components") \
|
|
479
|
+
/** Existing document contains too many levels of nesting */ \
|
|
475
480
|
X(LCB_SUBDOC_DOC_E2DEEP, 0x43,\
|
|
476
481
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
477
482
|
"Existing document contains too many levels of nesting") \
|
|
483
|
+
/** Subdocument operation would invalidate the JSON */ \
|
|
478
484
|
X(LCB_SUBDOC_VALUE_CANTINSERT, 0x44, \
|
|
479
485
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
480
486
|
"Subdocument operation would invalidate the JSON") \
|
|
487
|
+
/** Existing document is not valid JSON */ \
|
|
481
488
|
X(LCB_SUBDOC_DOC_NOTJSON, 0x45,\
|
|
482
489
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
483
490
|
"Existing document is not valid JSON") \
|
|
491
|
+
/** The existing numeric value is too large */ \
|
|
484
492
|
X(LCB_SUBDOC_NUM_ERANGE, 0x46, \
|
|
485
493
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
486
494
|
"The existing numeric value is too large") \
|
|
495
|
+
/** Delta must be numeric, within the 64 bit signed range, and non-zero */ \
|
|
487
496
|
X(LCB_SUBDOC_BAD_DELTA, 0x47,\
|
|
488
497
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
489
498
|
"Delta must be numeric, within the 64 bit signed range, and non-zero") \
|
|
499
|
+
/** The given path already exists in the document */ \
|
|
490
500
|
X(LCB_SUBDOC_PATH_EEXISTS, 0x48,\
|
|
491
501
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
492
502
|
"The given path already exists in the document") \
|
|
503
|
+
/** Could not execute one or more multi lookups or mutations */ \
|
|
493
504
|
X(LCB_SUBDOC_MULTI_FAILURE, 0x49,\
|
|
494
505
|
LCB_ERRTYPE_DATAOP|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
495
506
|
"Could not execute one or more multi lookups or mutations") \
|
|
507
|
+
/** Value is too deep to insert */ \
|
|
496
508
|
X(LCB_SUBDOC_VALUE_E2DEEP, 0x4A,\
|
|
497
509
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
498
510
|
"Value is too deep to insert") \
|
|
511
|
+
/** A badly formatted packet was sent to the server. Please report this in a bug */ \
|
|
499
512
|
X(LCB_EINVAL_MCD, 0x4B, LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_INTERNAL, \
|
|
500
513
|
"A badly formatted packet was sent to the server. Please report this in a bug") \
|
|
514
|
+
/** Missing subdocument path */ \
|
|
501
515
|
X(LCB_EMPTY_PATH, 0x4C, LCB_ERRTYPE_INPUT, "Missing subdocument path") \
|
|
516
|
+
/** Unknown subdocument command */ \
|
|
502
517
|
X(LCB_UNKNOWN_SDCMD, 0x4D, LCB_ERRTYPE_INPUT, "Unknown subdocument command") \
|
|
518
|
+
/** No commands specified */ \
|
|
503
519
|
X(LCB_ENO_COMMANDS, 0x4E, LCB_ERRTYPE_INPUT, "No commands specified") \
|
|
520
|
+
/** Query execution failed. Inspect raw response object for information */ \
|
|
504
521
|
X(LCB_QUERY_ERROR, 0x4F, LCB_ERRTYPE_SRVGEN, \
|
|
505
522
|
"Query execution failed. Inspect raw response object for information") \
|
|
506
|
-
\
|
|
523
|
+
/** Generic temporary error received from server*/ \
|
|
507
524
|
X(LCB_GENERIC_TMPERR, 0x50, LCB_ERRTYPE_TRANSIENT|LCB_ERRTYPE_SRVGEN, \
|
|
508
525
|
"Generic temporary error received from server") \
|
|
526
|
+
/** Generic subdocument error received from server*/ \
|
|
509
527
|
X(LCB_GENERIC_SUBDOCERR, 0x51, LCB_ERRTYPE_SUBDOC|LCB_ERRTYPE_SRVGEN, \
|
|
510
528
|
"Generic subdocument error received from server") \
|
|
529
|
+
/** Generic constraint error received from server*/ \
|
|
511
530
|
X(LCB_GENERIC_CONSTRAINT_ERR, 0x52, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN, \
|
|
512
531
|
"Generic constraint error received from server") \
|
|
532
|
+
/** Invalid reply received from nameserver*/ \
|
|
513
533
|
X(LCB_NAMESERVER_ERROR, 0x53, LCB_ERRTYPE_NETWORK, \
|
|
514
534
|
"Invalid reply received from nameserver") \
|
|
535
|
+
/** Not authorized for operation*/ \
|
|
515
536
|
X(LCB_NOT_AUTHORIZED, 0x54, LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN, \
|
|
516
537
|
"Not authorized for operation") \
|
|
538
|
+
/** An invalid combination of commands was specified*/ \
|
|
517
539
|
X(LCB_SUBDOC_INVALID_COMBO, 0x55, \
|
|
518
540
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
519
541
|
"An invalid combination of commands was specified") \
|
|
542
|
+
/** Specified key was successfully found, but one or more path operations failed*/ \
|
|
520
543
|
X(LCB_SUBDOC_MULTI_PATH_FAILURE, 0x56, \
|
|
521
544
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
522
545
|
"Specified key was successfully found, but one or more path operations failed") \
|
|
546
|
+
/** The operation completed successfully, but operated on a deleted document*/ \
|
|
523
547
|
X(LCB_SUBDOC_SUCCESS_DELETED, 0x57, \
|
|
524
548
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
525
549
|
"The operation completed successfully, but operated on a deleted document") \
|
|
550
|
+
/** The combination of the subdoc flags for the xattrs is not valid*/ \
|
|
526
551
|
X(LCB_SUBDOC_XATTR_INVALID_FLAG_COMBO, 0x58, \
|
|
527
552
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
528
553
|
"The combination of the subdoc flags for the xattrs is not valid") \
|
|
554
|
+
/** Only a single xattr key may be accessed at the same time*/ \
|
|
529
555
|
X(LCB_SUBDOC_XATTR_INVALID_KEY_COMBO, 0x59, \
|
|
530
556
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
531
557
|
"Only a single xattr key may be accessed at the same time") \
|
|
558
|
+
/** The server has no knowledge of the requested macro*/ \
|
|
532
559
|
X(LCB_SUBDOC_XATTR_UNKNOWN_MACRO, 0x5a, \
|
|
533
560
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
534
561
|
"The server has no knowledge of the requested macro") \
|
|
562
|
+
/** The server has no knowledge of the requested virtual xattr */ \
|
|
535
563
|
X(LCB_SUBDOC_XATTR_UNKNOWN_VATTR, 0x5b, \
|
|
536
564
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
537
565
|
"The server has no knowledge of the requested virtual xattr") \
|
|
566
|
+
/** Virtual xattrs cannot be modified */ \
|
|
538
567
|
X(LCB_SUBDOC_XATTR_CANT_MODIFY_VATTR, 0x5c, \
|
|
539
568
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
540
569
|
"Virtual xattrs cannot be modified") \
|
|
570
|
+
/** Specified key was found as a deleted document, but one or more path operations failed*/ \
|
|
541
571
|
X(LCB_SUBDOC_MULTI_PATH_FAILURE_DELETED, 0x5d, \
|
|
542
572
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
543
573
|
"Specified key was found as a deleted document, but one or more path operations failed") \
|
|
574
|
+
/** According to the spec all xattr commands should come first, followed by the commands for the document body */ \
|
|
544
575
|
X(LCB_SUBDOC_INVALID_XATTR_ORDER, 0x5e, \
|
|
545
576
|
LCB_ERRTYPE_INPUT|LCB_ERRTYPE_SRVGEN|LCB_ERRTYPE_SUBDOC, \
|
|
546
577
|
"According to the spec all xattr commands should come first, followed by the commands for the document body")
|
|
@@ -558,7 +589,7 @@ typedef enum {
|
|
|
558
589
|
LCB_MAX_ERROR_VAL,
|
|
559
590
|
#endif
|
|
560
591
|
|
|
561
|
-
|
|
592
|
+
/** The errors below this value reserved for libcouchbase usage. */
|
|
562
593
|
LCB_MAX_ERROR = 0x1000
|
|
563
594
|
} lcb_error_t;
|
|
564
595
|
|
|
@@ -43,7 +43,7 @@ typedef struct {
|
|
|
43
43
|
* populate the internal equivalents of the fields in this structure.
|
|
44
44
|
*
|
|
45
45
|
* Note that when using this field as an input for creating indexes, you
|
|
46
|
-
* should still set the
|
|
46
|
+
* should still set the @ref flags field if you wish to set flags (e.g. in
|
|
47
47
|
* order to create a deferred-build index).
|
|
48
48
|
*/
|
|
49
49
|
const char *rawjson;
|
|
@@ -25,8 +25,48 @@ extern "C" {
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* @ingroup lcb-public-api
|
|
28
|
-
* @defgroup lcb-n1ql-api N1QL
|
|
29
|
-
* @brief Execute N1QL queries
|
|
28
|
+
* @defgroup lcb-n1ql-api N1QL/Analytics
|
|
29
|
+
* @brief Execute N1QL/Analytics queries.
|
|
30
|
+
*
|
|
31
|
+
* Query language based on SQL, but designed for structured and flexible JSON
|
|
32
|
+
* documents. Querying can solve typical programming tasks such as finding a
|
|
33
|
+
* user profile by email address, performing aggregations etc.
|
|
34
|
+
*
|
|
35
|
+
* @code{.c}
|
|
36
|
+
* const char *query = "{\"statement\":\"SELECT * FROM breweries LIMIT 10\"}";
|
|
37
|
+
* lcb_CMDN1QL cmd = {0};
|
|
38
|
+
* int idx = 0;
|
|
39
|
+
* // NOTE: with this flag, the request will be issued to Analytics service
|
|
40
|
+
* cmd.cmdflags = LCB_CMDN1QL_F_ANALYTICSQUERY;
|
|
41
|
+
* cmd.callback = row_callback;
|
|
42
|
+
* cmd.query = query;
|
|
43
|
+
* cmd.nquery = strlen(query);
|
|
44
|
+
* lcb_n1ql_query(instance, &idx, &cmd);
|
|
45
|
+
* lcb_wait(instance);
|
|
46
|
+
* @endcode
|
|
47
|
+
*
|
|
48
|
+
* Where row_callback might be implemented like this:
|
|
49
|
+
*
|
|
50
|
+
* @code{.c}
|
|
51
|
+
* static void row_callback(lcb_t instance, int type, const lcb_RESPN1QL *resp)
|
|
52
|
+
* {
|
|
53
|
+
* int *idx = (int *)resp->cookie;
|
|
54
|
+
* if (resp->rc != LCB_SUCCESS) {
|
|
55
|
+
* printf("failed to execute query: %s\n", lcb_strerror_short(resp->rc));
|
|
56
|
+
* exit(EXIT_FAILURE);
|
|
57
|
+
* }
|
|
58
|
+
* if (resp->rflags & LCB_RESP_F_FINAL) {
|
|
59
|
+
* printf("META: ");
|
|
60
|
+
* } else {
|
|
61
|
+
* printf("ROW #%d: ", (*idx)++);
|
|
62
|
+
* }
|
|
63
|
+
* printf("%.*s\n", (int)resp->nrow, (char *)resp->row);
|
|
64
|
+
* }
|
|
65
|
+
* @endcode
|
|
66
|
+
*
|
|
67
|
+
* @see more details on @ref lcb_n1ql_query and @ref lcb_CMDN1QL.
|
|
68
|
+
*
|
|
69
|
+
* Also there is a query builder available for N1QL queries: @ref lcb_n1p_new/@ref lcb_n1p_mkcmd.
|
|
30
70
|
*/
|
|
31
71
|
|
|
32
72
|
/**
|
|
@@ -35,6 +75,9 @@ extern "C" {
|
|
|
35
75
|
*/
|
|
36
76
|
typedef struct lcb_RESPN1QL lcb_RESPN1QL;
|
|
37
77
|
typedef struct lcb_CMDN1QL lcb_CMDN1QL;
|
|
78
|
+
/**
|
|
79
|
+
* Pointer for request instance
|
|
80
|
+
*/
|
|
38
81
|
typedef struct lcb_N1QLREQ* lcb_N1QLHANDLE;
|
|
39
82
|
|
|
40
83
|
/**
|
|
@@ -324,13 +367,13 @@ lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd);
|
|
|
324
367
|
#define LCB_CMDN1QL_F_JSONQUERY (1 << 17)
|
|
325
368
|
|
|
326
369
|
/**
|
|
327
|
-
* This is an
|
|
328
|
-
* to target. When this flag is set, things like prepared queries and
|
|
329
|
-
* parametrized statements will not work.
|
|
370
|
+
* This is an Analytics query.
|
|
330
371
|
*
|
|
331
|
-
* @
|
|
372
|
+
* @committed
|
|
332
373
|
*/
|
|
333
|
-
#define
|
|
374
|
+
#define LCB_CMDN1QL_F_ANALYTICSQUERY (1 << 18)
|
|
375
|
+
/* @private an alias for compatibility */
|
|
376
|
+
#define LCB_CMDN1QL_F_CBASQUERY LCB_CMDN1QL_F_ANALYTICSQUERY
|
|
334
377
|
|
|
335
378
|
/**
|
|
336
379
|
* Command structure for N1QL queries. Typically an application will use the
|
|
@@ -406,6 +449,8 @@ struct lcb_RESPN1QL {
|
|
|
406
449
|
*
|
|
407
450
|
* This function will send the query to a query server in the cluster
|
|
408
451
|
* and will invoke the callback (lcb_CMDN1QL::callback) for each result returned.
|
|
452
|
+
* By default it will run query as N1QL flavour, for Analytics set
|
|
453
|
+
* @ref LCB_CMDN1QL_F_ANALYTICSQUERY flag in cmdflags of @ref lcb_CMDN1QL argument.
|
|
409
454
|
*
|
|
410
455
|
* @param instance The instance
|
|
411
456
|
* @param cookie Pointer to application data
|
|
@@ -447,18 +492,47 @@ LIBCOUCHBASE_API
|
|
|
447
492
|
void
|
|
448
493
|
lcb_n1ql_cancel(lcb_t instance, lcb_N1QLHANDLE handle);
|
|
449
494
|
|
|
495
|
+
/**@}*/
|
|
496
|
+
|
|
497
|
+
/**@}*/
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* @ingroup lcb-public-api
|
|
501
|
+
* @addtogroup lcb-tracing-api
|
|
502
|
+
* @{
|
|
503
|
+
*/
|
|
450
504
|
#ifdef LCB_TRACING
|
|
505
|
+
|
|
451
506
|
/**
|
|
452
|
-
*
|
|
507
|
+
* Associate parent tracing span with the N1QL request.
|
|
508
|
+
*
|
|
509
|
+
* @param instance the instance
|
|
510
|
+
* @param handle N1QL request handle
|
|
511
|
+
* @param span parent span
|
|
512
|
+
*
|
|
513
|
+
* @par Attach parent tracing span to request object.
|
|
514
|
+
* @code{.c}
|
|
515
|
+
* lcb_CMDN1QL cmd = {};
|
|
516
|
+
* // initialize N1QL command...
|
|
517
|
+
*
|
|
518
|
+
* lcb_N1QLHANDLE handle = NULL;
|
|
519
|
+
* cmd->handle = &handle;
|
|
520
|
+
*
|
|
521
|
+
* lcb_error_t err = lcb_fts_query(instance, cookie, cmd);
|
|
522
|
+
* if (err == LCB_SUCCESS) {
|
|
523
|
+
* lcb_n1ql_set_parent_span(instance, handle, span);
|
|
524
|
+
* }
|
|
525
|
+
* @endcode
|
|
526
|
+
*
|
|
527
|
+
* @committed
|
|
453
528
|
*/
|
|
454
529
|
LIBCOUCHBASE_API
|
|
455
530
|
void lcb_n1ql_set_parent_span(lcb_t instance, lcb_N1QLHANDLE handle, lcbtrace_SPAN *span);
|
|
456
|
-
#endif
|
|
457
|
-
|
|
458
|
-
/**@}*/
|
|
459
|
-
|
|
460
|
-
/**@}*/
|
|
461
531
|
|
|
532
|
+
#endif
|
|
533
|
+
/**
|
|
534
|
+
* @} (Group: Tracing)
|
|
535
|
+
*/
|
|
462
536
|
#ifdef __cplusplus
|
|
463
537
|
}
|
|
464
538
|
#endif
|
|
@@ -28,10 +28,6 @@ extern "C" {
|
|
|
28
28
|
* 4.5 release which allows access to parts of the document. These parts are
|
|
29
29
|
* called _sub-documents_ and can be accessed using the sub-document API
|
|
30
30
|
*
|
|
31
|
-
* @warning
|
|
32
|
-
* The sub-document API is experimental and subject to change and is here for
|
|
33
|
-
* demonstration purposes only.
|
|
34
|
-
*
|
|
35
31
|
* @addtogroup lcb-subdoc
|
|
36
32
|
* @{
|
|
37
33
|
*/
|
|
@@ -113,7 +109,7 @@ typedef enum {
|
|
|
113
109
|
* should be placed, for example `array[2]` will cause the value(s) to be
|
|
114
110
|
* the 3rd item(s) in the array.
|
|
115
111
|
*
|
|
116
|
-
* The array must already exist and the @ref
|
|
112
|
+
* The array must already exist and the @ref LCB_SDSPEC_F_MKINTERMEDIATES
|
|
117
113
|
* flag is not honored.
|
|
118
114
|
*/
|
|
119
115
|
LCB_SDCMD_ARRAY_INSERT,
|
|
@@ -182,7 +178,7 @@ typedef struct {
|
|
|
182
178
|
lcb_KEYBUF path;
|
|
183
179
|
|
|
184
180
|
/**
|
|
185
|
-
*
|
|
181
|
+
* Value for the operation. This should be assigned using
|
|
186
182
|
* @ref LCB_SDSPEC_SET_VALUE. The contents of the value should be valid
|
|
187
183
|
* until the operation is scheduled (i.e. lcb_subdoc3())
|
|
188
184
|
*/
|
|
@@ -307,7 +303,7 @@ typedef struct {
|
|
|
307
303
|
* Note that #value and #nvalue are only valid if #status is ::LCB_SUCCESS
|
|
308
304
|
*/
|
|
309
305
|
typedef struct {
|
|
310
|
-
/** Value for the mutation (only applicable for ::
|
|
306
|
+
/** Value for the mutation (only applicable for ::LCB_SDCMD_COUNTER, currently) */
|
|
311
307
|
const void *value;
|
|
312
308
|
/** Length of the value */
|
|
313
309
|
size_t nvalue;
|
|
@@ -22,7 +22,12 @@
|
|
|
22
22
|
* @file
|
|
23
23
|
* End to end tracing
|
|
24
24
|
*
|
|
25
|
-
* @
|
|
25
|
+
* @ingroup lcb-public-api
|
|
26
|
+
* @defgroup lcb-tracing-api End to end tracing
|
|
27
|
+
* @brief Tracing operations through SDK and the Cluster.
|
|
28
|
+
*
|
|
29
|
+
* @addtogroup lcb-tracing-api
|
|
30
|
+
* @{
|
|
26
31
|
*/
|
|
27
32
|
|
|
28
33
|
#ifdef __cplusplus
|
|
@@ -40,40 +45,62 @@ extern "C" {
|
|
|
40
45
|
typedef struct lcbtrace_SPAN_Cdummy lcbtrace_SPAN;
|
|
41
46
|
#endif
|
|
42
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Flag for @ref lcbtrace_new to request threshold logging tracer.
|
|
50
|
+
*/
|
|
43
51
|
#define LCBTRACE_F_THRESHOLD 0x01
|
|
44
52
|
|
|
45
53
|
struct lcbtrace_TRACER;
|
|
54
|
+
/**
|
|
55
|
+
* Tracer interface.
|
|
56
|
+
*/
|
|
46
57
|
typedef struct lcbtrace_TRACER {
|
|
47
|
-
lcb_U16 version;
|
|
48
|
-
lcb_U64 flags;
|
|
49
|
-
void *cookie;
|
|
50
|
-
void (*destructor)(struct lcbtrace_TRACER *tracer);
|
|
58
|
+
lcb_U16 version; /**< version of the structure, current value is 0 */
|
|
59
|
+
lcb_U64 flags; /**< tracer-specific flags */
|
|
60
|
+
void *cookie; /**< opaque pointer (e.g. pointer to wrapper structure) */
|
|
61
|
+
void (*destructor)(struct lcbtrace_TRACER *tracer); /**< destructor function or NULL, if it is not necessary */
|
|
51
62
|
union {
|
|
52
63
|
struct {
|
|
53
|
-
void (*report)(struct lcbtrace_TRACER *tracer, lcbtrace_SPAN *span);
|
|
64
|
+
void (*report)(struct lcbtrace_TRACER *tracer, lcbtrace_SPAN *span); /**< optional reporter function */
|
|
54
65
|
} v0;
|
|
55
66
|
} v;
|
|
56
67
|
} lcbtrace_TRACER;
|
|
57
68
|
|
|
58
69
|
/**
|
|
59
|
-
*
|
|
70
|
+
* Get current tracer of the connection.
|
|
71
|
+
*
|
|
72
|
+
* @param instance current connection
|
|
60
73
|
* @return tracer
|
|
74
|
+
*
|
|
75
|
+
* @committed
|
|
61
76
|
*/
|
|
62
77
|
LIBCOUCHBASE_API lcbtrace_TRACER *lcb_get_tracer(lcb_t instance);
|
|
63
78
|
|
|
64
79
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
80
|
+
* Set current tracer for the connection.
|
|
81
|
+
*
|
|
82
|
+
* @param instance current connection
|
|
83
|
+
* @param tracer tracer instance
|
|
84
|
+
*
|
|
85
|
+
* @committed
|
|
67
86
|
*/
|
|
68
87
|
LIBCOUCHBASE_API void lcb_set_tracer(lcb_t instance, lcbtrace_TRACER *tracer);
|
|
69
88
|
|
|
70
89
|
/**
|
|
71
|
-
*
|
|
90
|
+
* Create default libcouchbase tracer instance.
|
|
91
|
+
*
|
|
92
|
+
* @param instance current connection
|
|
93
|
+
* @param flags pass @ref LCBTRACE_F_THRESHOLD if needed threshold logging tracer.
|
|
94
|
+
* @return new tracer or NULL when nothing has been created.
|
|
95
|
+
*
|
|
96
|
+
* @committed
|
|
72
97
|
*/
|
|
73
98
|
LIBCOUCHBASE_API lcbtrace_TRACER *lcbtrace_new(lcb_t instance, lcb_U64 flags);
|
|
74
99
|
|
|
75
100
|
/**
|
|
76
|
-
*
|
|
101
|
+
* Destroy tracer object.
|
|
102
|
+
*
|
|
103
|
+
* @committed
|
|
77
104
|
*/
|
|
78
105
|
LIBCOUCHBASE_API void lcbtrace_destroy(lcbtrace_TRACER *tracer);
|
|
79
106
|
|
|
@@ -89,55 +116,86 @@ typedef struct {
|
|
|
89
116
|
lcbtrace_SPAN *span;
|
|
90
117
|
} lcbtrace_REF;
|
|
91
118
|
|
|
92
|
-
#define LCBTRACE_OP_GET "get"
|
|
93
|
-
|
|
94
119
|
/** zero means the library will trigger timestamp automatically */
|
|
95
120
|
#define LCBTRACE_NOW 0
|
|
96
121
|
|
|
97
122
|
/**
|
|
98
|
-
*
|
|
123
|
+
* Get current timestamp.
|
|
124
|
+
*
|
|
125
|
+
* @return current wall clock time in microseconds
|
|
126
|
+
*
|
|
127
|
+
* @committed
|
|
99
128
|
*/
|
|
100
129
|
LIBCOUCHBASE_API
|
|
101
130
|
lcb_U64 lcbtrace_now(void);
|
|
102
131
|
|
|
103
132
|
/**
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* @param
|
|
107
|
-
* @param
|
|
108
|
-
* @param
|
|
133
|
+
* Start span.
|
|
134
|
+
*
|
|
135
|
+
* @param tracer tracer instance
|
|
136
|
+
* @param operation the operation code
|
|
137
|
+
* @param now start timestamp or @ref LCBTRACE_NOW to let the library to record current time from the wall clock.
|
|
138
|
+
* @param ref reference to the other span, or NULL
|
|
139
|
+
*
|
|
140
|
+
* @committed
|
|
109
141
|
*/
|
|
110
142
|
LIBCOUCHBASE_API
|
|
111
143
|
lcbtrace_SPAN *lcbtrace_span_start(lcbtrace_TRACER *tracer, const char *operation, lcb_U64 now, lcbtrace_REF *ref);
|
|
112
144
|
|
|
113
145
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* @param
|
|
146
|
+
* Mark the span as finished.
|
|
147
|
+
*
|
|
148
|
+
* @param span span instance
|
|
149
|
+
* @param now finish timestamp or @ref LCBTRACE_NOW to let the library to record current time from the wall clock.
|
|
150
|
+
*
|
|
151
|
+
* @committed
|
|
117
152
|
*/
|
|
118
153
|
LIBCOUCHBASE_API
|
|
119
154
|
void lcbtrace_span_finish(lcbtrace_SPAN *span, lcb_U64 now);
|
|
120
155
|
|
|
121
156
|
/**
|
|
122
|
-
*
|
|
157
|
+
* Get start timestamp of the span.
|
|
158
|
+
*
|
|
159
|
+
* @param span span instance
|
|
160
|
+
* @return timestamp in microseconds when the span has been started.
|
|
161
|
+
*
|
|
162
|
+
* @committed
|
|
123
163
|
*/
|
|
124
164
|
LIBCOUCHBASE_API
|
|
125
165
|
lcb_U64 lcbtrace_span_get_start_ts(lcbtrace_SPAN *span);
|
|
126
166
|
|
|
127
167
|
/**
|
|
128
|
-
*
|
|
168
|
+
* Get finish timestamp of the span.
|
|
169
|
+
*
|
|
170
|
+
* @param span span instance
|
|
171
|
+
* @return timestamp in microseconds when the span has been finished.
|
|
172
|
+
*
|
|
173
|
+
* @committed
|
|
129
174
|
*/
|
|
130
175
|
LIBCOUCHBASE_API
|
|
131
176
|
lcb_U64 lcbtrace_span_get_finish_ts(lcbtrace_SPAN *span);
|
|
132
177
|
|
|
133
178
|
/**
|
|
134
|
-
*
|
|
179
|
+
* Check if the span is orphaned.
|
|
180
|
+
*
|
|
181
|
+
* Spans might be marked as orphaned, when the library has discarded
|
|
182
|
+
* request structure without waiting for server response (e.g. on timeout).
|
|
183
|
+
*
|
|
184
|
+
* @param span span instance
|
|
185
|
+
* @return non-zero if span is orphaned.
|
|
186
|
+
*
|
|
187
|
+
* @committed
|
|
135
188
|
*/
|
|
136
189
|
LIBCOUCHBASE_API
|
|
137
190
|
int lcbtrace_span_is_orphaned(lcbtrace_SPAN *span);
|
|
138
191
|
|
|
139
192
|
/**
|
|
140
|
-
*
|
|
193
|
+
* Get operation code of the span.
|
|
194
|
+
*
|
|
195
|
+
* @param span span instance
|
|
196
|
+
* @return operation code
|
|
197
|
+
*
|
|
198
|
+
* @committed
|
|
141
199
|
*/
|
|
142
200
|
LIBCOUCHBASE_API
|
|
143
201
|
const char *lcbtrace_span_get_operation(lcbtrace_SPAN *span);
|
|
@@ -163,11 +221,10 @@ const char *lcbtrace_span_get_operation(lcbtrace_SPAN *span);
|
|
|
163
221
|
#define LCBTRACE_OP_UPSERT "upsert"
|
|
164
222
|
#define LCBTRACE_OP_UPSERT "upsert"
|
|
165
223
|
|
|
166
|
-
#define LCBTRACE_OP_STORE2NAME(code)
|
|
167
|
-
(code == LCB_ADD)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
LCBTRACE_OP_UPSERT
|
|
224
|
+
#define LCBTRACE_OP_STORE2NAME(code) \
|
|
225
|
+
(code == LCB_ADD) \
|
|
226
|
+
? LCBTRACE_OP_ADD \
|
|
227
|
+
: (code == LCB_PREPEND) ? LCBTRACE_OP_PREPEND : (code == LCB_APPEND) ? LCBTRACE_OP_APPEND : LCBTRACE_OP_UPSERT
|
|
171
228
|
|
|
172
229
|
#define LCBTRACE_TAG_DB_TYPE "db.type"
|
|
173
230
|
#define LCBTRACE_TAG_SPAN_KIND "span.kind"
|
|
@@ -215,79 +272,135 @@ const char *lcbtrace_span_get_operation(lcbtrace_SPAN *span);
|
|
|
215
272
|
#define LCBTRACE_TAG_PEER_LATENCY "peer.latency"
|
|
216
273
|
|
|
217
274
|
/**
|
|
218
|
-
*
|
|
275
|
+
* Get ID of the span.
|
|
276
|
+
*
|
|
277
|
+
* @param span span instance
|
|
278
|
+
* @return span ID
|
|
279
|
+
*
|
|
280
|
+
* @committed
|
|
219
281
|
*/
|
|
220
282
|
LIBCOUCHBASE_API
|
|
221
283
|
lcb_U64 lcbtrace_span_get_span_id(lcbtrace_SPAN *span);
|
|
222
284
|
|
|
223
285
|
/**
|
|
224
|
-
*
|
|
286
|
+
* Get trace ID of the span.
|
|
287
|
+
*
|
|
288
|
+
* @param span span instance
|
|
289
|
+
* @return trace ID
|
|
290
|
+
*
|
|
291
|
+
* @committed
|
|
225
292
|
*/
|
|
226
293
|
LIBCOUCHBASE_API
|
|
227
294
|
lcb_U64 lcbtrace_span_get_trace_id(lcbtrace_SPAN *span);
|
|
228
295
|
|
|
229
296
|
/**
|
|
230
|
-
*
|
|
297
|
+
* Get parent span of the span.
|
|
298
|
+
*
|
|
299
|
+
* @param span span instance
|
|
300
|
+
* @return parent span or NULL
|
|
301
|
+
*
|
|
302
|
+
* @committed
|
|
231
303
|
*/
|
|
232
304
|
LIBCOUCHBASE_API
|
|
233
305
|
lcbtrace_SPAN *lcbtrace_span_get_parent(lcbtrace_SPAN *span);
|
|
234
306
|
|
|
235
307
|
/**
|
|
236
|
-
*
|
|
308
|
+
* Get value of the string tag of the span.
|
|
309
|
+
*
|
|
310
|
+
* @param span span instance
|
|
311
|
+
* @param name name of the tag
|
|
312
|
+
* @param value pointer to result string
|
|
313
|
+
* @param nvalue pointer to length of the result string
|
|
314
|
+
* @return LCB_SUCCESS if value exists and was written to result pointer
|
|
315
|
+
*
|
|
316
|
+
* @committed
|
|
237
317
|
*/
|
|
238
318
|
LIBCOUCHBASE_API
|
|
239
319
|
lcb_error_t lcbtrace_span_get_tag_str(lcbtrace_SPAN *span, const char *name, char **value, size_t *nvalue);
|
|
240
320
|
|
|
241
321
|
/**
|
|
242
|
-
*
|
|
322
|
+
* Get value of the integer tag of the span.
|
|
323
|
+
*
|
|
324
|
+
* @param span span instance
|
|
325
|
+
* @param name name of the tag
|
|
326
|
+
* @param value pointer to result
|
|
327
|
+
* @return LCB_SUCCESS if value exists and was written to result pointer
|
|
328
|
+
*
|
|
329
|
+
* @committed
|
|
243
330
|
*/
|
|
244
331
|
LIBCOUCHBASE_API
|
|
245
332
|
lcb_error_t lcbtrace_span_get_tag_uint64(lcbtrace_SPAN *span, const char *name, lcb_U64 *value);
|
|
246
333
|
|
|
247
334
|
/**
|
|
248
|
-
*
|
|
335
|
+
* Get value of the double tag of the span.
|
|
336
|
+
*
|
|
337
|
+
* @param span span instance
|
|
338
|
+
* @param name name of the tag
|
|
339
|
+
* @param value pointer to result
|
|
340
|
+
* @return LCB_SUCCESS if value exists and was written to result pointer
|
|
341
|
+
*
|
|
342
|
+
* @committed
|
|
249
343
|
*/
|
|
250
344
|
LIBCOUCHBASE_API
|
|
251
345
|
lcb_error_t lcbtrace_span_get_tag_double(lcbtrace_SPAN *span, const char *name, double *value);
|
|
252
346
|
|
|
253
347
|
/**
|
|
254
|
-
*
|
|
348
|
+
* Get value of the boolean tag of the span.
|
|
349
|
+
*
|
|
350
|
+
* @param span span instance
|
|
351
|
+
* @param name name of the tag
|
|
352
|
+
* @param value pointer to result
|
|
353
|
+
* @return LCB_SUCCESS if value exists and was written to result pointer
|
|
354
|
+
*
|
|
355
|
+
* @committed
|
|
255
356
|
*/
|
|
256
357
|
LIBCOUCHBASE_API
|
|
257
|
-
lcb_error_t lcbtrace_span_get_tag_bool(lcbtrace_SPAN *span, const char *name, int value);
|
|
358
|
+
lcb_error_t lcbtrace_span_get_tag_bool(lcbtrace_SPAN *span, const char *name, int *value);
|
|
258
359
|
|
|
259
360
|
/**
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
* @param
|
|
263
|
-
* @param
|
|
361
|
+
* Add string tag to span.
|
|
362
|
+
*
|
|
363
|
+
* @param span span instance
|
|
364
|
+
* @param name name of the tag
|
|
365
|
+
* @param value value of the tag (NUL-terminated)
|
|
366
|
+
*
|
|
367
|
+
* @committed
|
|
264
368
|
*/
|
|
265
369
|
LIBCOUCHBASE_API
|
|
266
370
|
void lcbtrace_span_add_tag_str(lcbtrace_SPAN *span, const char *name, const char *value);
|
|
267
371
|
|
|
268
372
|
/**
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
* @param
|
|
272
|
-
* @param
|
|
373
|
+
* Add integer tag to span.
|
|
374
|
+
*
|
|
375
|
+
* @param span span instance
|
|
376
|
+
* @param name name of the tag
|
|
377
|
+
* @param value value of the tag
|
|
378
|
+
*
|
|
379
|
+
* @committed
|
|
273
380
|
*/
|
|
274
381
|
LIBCOUCHBASE_API
|
|
275
382
|
void lcbtrace_span_add_tag_uint64(lcbtrace_SPAN *span, const char *name, lcb_U64 value);
|
|
276
383
|
|
|
277
384
|
/**
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
* @param
|
|
281
|
-
* @param
|
|
385
|
+
* Add double tag to span.
|
|
386
|
+
*
|
|
387
|
+
* @param span span instance
|
|
388
|
+
* @param name name of the tag
|
|
389
|
+
* @param value value of the tag
|
|
390
|
+
*
|
|
391
|
+
* @committed
|
|
282
392
|
*/
|
|
283
393
|
LIBCOUCHBASE_API
|
|
284
394
|
void lcbtrace_span_add_tag_double(lcbtrace_SPAN *span, const char *name, double value);
|
|
285
395
|
|
|
286
396
|
/**
|
|
287
|
-
*
|
|
288
|
-
*
|
|
289
|
-
* @param
|
|
290
|
-
* @param
|
|
397
|
+
* Add boolean tag to span.
|
|
398
|
+
*
|
|
399
|
+
* @param span span instance
|
|
400
|
+
* @param name name of the tag
|
|
401
|
+
* @param value value of the tag. 0 if false, otherwise -- true.
|
|
402
|
+
*
|
|
403
|
+
* @committed
|
|
291
404
|
*/
|
|
292
405
|
LIBCOUCHBASE_API
|
|
293
406
|
void lcbtrace_span_add_tag_bool(lcbtrace_SPAN *span, const char *name, int value);
|
|
@@ -297,7 +410,8 @@ void lcbtrace_span_add_tag_bool(lcbtrace_SPAN *span, const char *name, int value
|
|
|
297
410
|
*
|
|
298
411
|
* @param cmd the command structure
|
|
299
412
|
* @param ctx the lcbtrace_SPAN pointer
|
|
300
|
-
*
|
|
413
|
+
*
|
|
414
|
+
* @committed
|
|
301
415
|
*/
|
|
302
416
|
#define LCB_CMD_SET_TRACESPAN(cmd, span) \
|
|
303
417
|
do { \
|
|
@@ -313,6 +427,10 @@ typedef struct {
|
|
|
313
427
|
void (*report)(void *state, lcbtrace_SPAN *span);
|
|
314
428
|
} ldcptrace_REPORTER;
|
|
315
429
|
|
|
430
|
+
/**
|
|
431
|
+
* @} (Group: Tracing)
|
|
432
|
+
*/
|
|
433
|
+
|
|
316
434
|
#ifdef __cplusplus
|
|
317
435
|
}
|
|
318
436
|
#endif
|