Kudu C++ client API
client.h
1 // Licensed to the Apache Software Foundation (ASF) under one
2 // or more contributor license agreements. See the NOTICE file
3 // distributed with this work for additional information
4 // regarding copyright ownership. The ASF licenses this file
5 // to you under the Apache License, Version 2.0 (the
6 // "License"); you may not use this file except in compliance
7 // with the License. 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,
12 // software distributed under the License is distributed on an
13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 // KIND, either express or implied. See the License for the
15 // specific language governing permissions and limitations
16 // under the License.
17 
24 
25 #ifndef KUDU_CLIENT_CLIENT_H
26 #define KUDU_CLIENT_CLIENT_H
27 
28 #include <stdint.h>
29 #include <string>
30 #include <vector>
31 
32 #include "kudu/client/resource_metrics.h"
33 #include "kudu/client/row_result.h"
34 #include "kudu/client/scan_batch.h"
35 #include "kudu/client/scan_predicate.h"
36 #include "kudu/client/schema.h"
37 #include "kudu/client/shared_ptr.h"
38 #ifdef KUDU_HEADERS_NO_STUBS
39 #include <gtest/gtest_prod.h>
40 #include "kudu/gutil/macros.h"
41 #include "kudu/gutil/port.h"
42 #else
43 #include "kudu/client/stubs.h"
44 #endif
45 #include "kudu/client/write_op.h"
46 #include "kudu/util/kudu_export.h"
47 #include "kudu/util/monotime.h"
48 #include "kudu/util/status.h"
49 
50 namespace kudu {
51 
52 class ClientStressTest_TestUniqueClientIds_Test;
53 class LinkedListTester;
54 class PartitionSchema;
55 
56 namespace client {
57 
58 class KuduLoggingCallback;
59 class KuduScanToken;
60 class KuduSession;
61 class KuduStatusCallback;
62 class KuduTable;
63 class KuduTableAlterer;
64 class KuduTableCreator;
65 class KuduTablet;
66 class KuduTabletServer;
67 class KuduValue;
68 class KuduWriteOperation;
69 
70 namespace internal {
71 class Batcher;
72 class ErrorCollector;
73 class GetTableSchemaRpc;
74 class LookupRpc;
75 class MetaCache;
76 class RemoteTablet;
77 class RemoteTabletServer;
78 class WriteRpc;
79 } // namespace internal
80 
93 void KUDU_EXPORT InstallLoggingCallback(KuduLoggingCallback* cb);
94 
101 void KUDU_EXPORT UninstallLoggingCallback();
102 
118 void KUDU_EXPORT SetVerboseLogLevel(int level);
119 
129 Status KUDU_EXPORT SetInternalSignalNumber(int signum);
130 
142 Status KUDU_EXPORT DisableSaslInitialization();
143 
146 std::string KUDU_EXPORT GetShortVersionString();
147 
150 std::string KUDU_EXPORT GetAllVersionInfo();
151 
156 class KUDU_EXPORT KuduClientBuilder {
157  public:
160 
164  KuduClientBuilder& clear_master_server_addrs();
165 
171  KuduClientBuilder& master_server_addrs(const std::vector<std::string>& addrs);
172 
180  KuduClientBuilder& add_master_server_addr(const std::string& addr);
181 
191  KuduClientBuilder& default_admin_operation_timeout(const MonoDelta& timeout);
192 
200  KuduClientBuilder& default_rpc_timeout(const MonoDelta& timeout);
201 
212  Status Build(sp::shared_ptr<KuduClient>* client);
213 
214  private:
215  class KUDU_NO_EXPORT Data;
216 
217  // Owned.
218  Data* data_;
219 
220  DISALLOW_COPY_AND_ASSIGN(KuduClientBuilder);
221 };
222 
249 class KUDU_EXPORT KuduClient : public sp::enable_shared_from_this<KuduClient> {
250  public:
251  ~KuduClient();
252 
257  KuduTableCreator* NewTableCreator();
258 
267  Status IsCreateTableInProgress(const std::string& table_name,
268  bool *create_in_progress);
269 
275  Status DeleteTable(const std::string& table_name);
276 
283  KuduTableAlterer* NewTableAlterer(const std::string& table_name);
284 
293  Status IsAlterTableInProgress(const std::string& table_name,
294  bool *alter_in_progress);
302  Status GetTableSchema(const std::string& table_name,
303  KuduSchema* schema);
304 
311  Status ListTabletServers(std::vector<KuduTabletServer*>* tablet_servers);
312 
320  Status ListTables(std::vector<std::string>* tables,
321  const std::string& filter = "");
322 
330  Status TableExists(const std::string& table_name, bool* exists);
331 
345  Status OpenTable(const std::string& table_name,
346  sp::shared_ptr<KuduTable>* table);
347 
353  sp::shared_ptr<KuduSession> NewSession();
354 
356 
369  Status KUDU_NO_EXPORT GetTablet(const std::string& tablet_id,
370  KuduTablet** tablet);
371 
373 
377 
378  CLOSEST_REPLICA,
379 
381  FIRST_REPLICA
382  };
383 
386  bool IsMultiMaster() const;
387 
389  const MonoDelta& default_admin_operation_timeout() const;
390 
392  const MonoDelta& default_rpc_timeout() const;
393 
396  static const uint64_t kNoTimestamp;
397 
437  uint64_t GetLatestObservedTimestamp() const;
438 
453  void SetLatestObservedTimestamp(uint64_t ht_timestamp);
454 
455  private:
456  class KUDU_NO_EXPORT Data;
457 
458  friend class internal::Batcher;
459  friend class internal::GetTableSchemaRpc;
460  friend class internal::LookupRpc;
461  friend class internal::MetaCache;
462  friend class internal::RemoteTablet;
463  friend class internal::RemoteTabletServer;
464  friend class internal::WriteRpc;
465  friend class ClientTest;
466  friend class KuduClientBuilder;
467  friend class KuduScanner;
468  friend class KuduScanToken;
469  friend class KuduScanTokenBuilder;
470  friend class KuduSession;
471  friend class KuduTable;
472  friend class KuduTableAlterer;
473  friend class KuduTableCreator;
474 
475  FRIEND_TEST(kudu::ClientStressTest, TestUniqueClientIds);
476  FRIEND_TEST(ClientTest, TestGetTabletServerBlacklist);
477  FRIEND_TEST(ClientTest, TestMasterDown);
478  FRIEND_TEST(ClientTest, TestMasterLookupPermits);
479  FRIEND_TEST(ClientTest, TestMetaCacheExpiry);
480  FRIEND_TEST(ClientTest, TestNonCoveringRangePartitions);
481  FRIEND_TEST(ClientTest, TestReplicatedTabletWritesWithLeaderElection);
482  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
483  FRIEND_TEST(ClientTest, TestScanTimeout);
484  FRIEND_TEST(ClientTest, TestWriteWithDeadMaster);
485  FRIEND_TEST(MasterFailoverTest, TestPauseAfterCreateTableIssued);
486 
487  KuduClient();
488 
489  // Owned.
490  Data* data_;
491 
492  DISALLOW_COPY_AND_ASSIGN(KuduClient);
493 };
494 
496 class KUDU_EXPORT KuduTabletServer {
497  public:
498  ~KuduTabletServer();
499 
502  const std::string& uuid() const;
503 
506  const std::string& hostname() const;
507 
510  uint16_t port() const;
511 
512  private:
513  class KUDU_NO_EXPORT Data;
514 
515  friend class KuduClient;
516  friend class KuduScanner;
517  friend class KuduScanTokenBuilder;
518 
520 
521  // Owned.
522  Data* data_;
523 
524  DISALLOW_COPY_AND_ASSIGN(KuduTabletServer);
525 };
526 
528 class KUDU_EXPORT KuduReplica {
529  public:
530  ~KuduReplica();
531 
536  bool is_leader() const;
537 
539  const KuduTabletServer& ts() const;
540 
541  private:
542  friend class KuduClient;
543  friend class KuduScanTokenBuilder;
544 
545  class KUDU_NO_EXPORT Data;
546 
547  KuduReplica();
548 
549  // Owned.
550  Data* data_;
551 
552  DISALLOW_COPY_AND_ASSIGN(KuduReplica);
553 };
554 
556 class KUDU_EXPORT KuduTablet {
557  public:
558  ~KuduTablet();
559 
562  const std::string& id() const;
563 
569  const std::vector<const KuduReplica*>& replicas() const;
570 
571  private:
572  friend class KuduClient;
573  friend class KuduScanTokenBuilder;
574 
575  class KUDU_NO_EXPORT Data;
576 
577  KuduTablet();
578 
579  // Owned.
580  Data* data_;
581 
582  DISALLOW_COPY_AND_ASSIGN(KuduTablet);
583 };
584 
586 class KUDU_EXPORT KuduTableCreator {
587  public:
588  ~KuduTableCreator();
589 
601  KuduTableCreator& table_name(const std::string& name);
602 
613  KuduTableCreator& schema(const KuduSchema* schema);
614 
631  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
632  int32_t num_buckets);
633 
649  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
650  int32_t num_buckets, int32_t seed);
651 
664  KuduTableCreator& set_range_partition_columns(const std::vector<std::string>& columns);
665 
670  };
671 
700  KuduTableCreator& add_range_partition(KuduPartialRow* lower_bound,
701  KuduPartialRow* upper_bound,
702  RangePartitionBound lower_bound_type = INCLUSIVE_BOUND,
703  RangePartitionBound upper_bound_type = EXCLUSIVE_BOUND);
704 
713  KuduTableCreator& add_range_partition_split(KuduPartialRow* split_row);
714 
720  KuduTableCreator& split_rows(const std::vector<const KuduPartialRow*>& split_rows)
721  ATTRIBUTE_DEPRECATED("use add_range_partition_split() instead");
722 
732  KuduTableCreator& num_replicas(int n_replicas);
733 
743  KuduTableCreator& timeout(const MonoDelta& timeout);
744 
752  KuduTableCreator& wait(bool wait);
753 
767  Status Create();
768 
769  private:
770  class KUDU_NO_EXPORT Data;
771 
772  friend class KuduClient;
773 
774  explicit KuduTableCreator(KuduClient* client);
775 
776  // Owned.
777  Data* data_;
778 
779  DISALLOW_COPY_AND_ASSIGN(KuduTableCreator);
780 };
781 
802 class KUDU_EXPORT KuduTable : public sp::enable_shared_from_this<KuduTable> {
803  public:
804  ~KuduTable();
805 
807  const std::string& name() const;
808 
816  const std::string& id() const;
817 
819  const KuduSchema& schema() const;
820 
822  int num_replicas() const;
823 
827  KuduInsert* NewInsert();
828 
832  KuduUpsert* NewUpsert();
833 
837  KuduUpdate* NewUpdate();
838 
842  KuduDelete* NewDelete();
843 
867  KuduPredicate* NewComparisonPredicate(const Slice& col_name,
869  KuduValue* value);
870 
894  KuduPredicate* NewInListPredicate(const Slice& col_name,
895  std::vector<KuduValue*>* values);
896 
899  KuduClient* client() const;
900 
902  const PartitionSchema& partition_schema() const;
903 
904  private:
905  class KUDU_NO_EXPORT Data;
906 
907  friend class KuduClient;
908 
909  KuduTable(const sp::shared_ptr<KuduClient>& client,
910  const std::string& name,
911  const std::string& id,
912  int num_replicas,
913  const KuduSchema& schema,
914  const PartitionSchema& partition_schema);
915 
916  // Owned.
917  Data* data_;
918 
919  DISALLOW_COPY_AND_ASSIGN(KuduTable);
920 };
921 
933 class KUDU_EXPORT KuduTableAlterer {
934  public:
935  ~KuduTableAlterer();
936 
942  KuduTableAlterer* RenameTo(const std::string& new_name);
943 
953  KuduColumnSpec* AddColumn(const std::string& name);
954 
963  KuduColumnSpec* AlterColumn(const std::string& name);
964 
972  KuduTableAlterer* DropColumn(const std::string& name);
973 
1005  KuduTableAlterer* AddRangePartition(
1006  KuduPartialRow* lower_bound,
1007  KuduPartialRow* upper_bound,
1010 
1038  KuduTableAlterer* DropRangePartition(
1039  KuduPartialRow* lower_bound,
1040  KuduPartialRow* upper_bound,
1043 
1053  KuduTableAlterer* timeout(const MonoDelta& timeout);
1054 
1066  KuduTableAlterer* wait(bool wait);
1067 
1072  Status Alter();
1073 
1074  private:
1075  class KUDU_NO_EXPORT Data;
1076  friend class KuduClient;
1077 
1078  KuduTableAlterer(KuduClient* client,
1079  const std::string& name);
1080 
1081  // Owned.
1082  Data* data_;
1083 
1084  DISALLOW_COPY_AND_ASSIGN(KuduTableAlterer);
1085 };
1086 
1092 class KUDU_EXPORT KuduError {
1093  public:
1094  ~KuduError();
1095 
1097  const Status& status() const;
1098 
1100  const KuduWriteOperation& failed_op() const;
1101 
1109  KuduWriteOperation* release_failed_op();
1110 
1121  bool was_possibly_successful() const;
1122 
1123  private:
1124  class KUDU_NO_EXPORT Data;
1125 
1126  friend class internal::Batcher;
1127  friend class internal::ErrorCollector;
1128  friend class KuduSession;
1129 
1130  KuduError(KuduWriteOperation* failed_op, const Status& error);
1131 
1132  // Owned.
1133  Data* data_;
1134 
1135  DISALLOW_COPY_AND_ASSIGN(KuduError);
1136 };
1137 
1138 
1197 class KUDU_EXPORT KuduSession : public sp::enable_shared_from_this<KuduSession> {
1198  public:
1199  ~KuduSession();
1200 
1202  enum FlushMode {
1208 
1236 
1249  MANUAL_FLUSH
1250  };
1251 
1260  Status SetFlushMode(FlushMode m) WARN_UNUSED_RESULT;
1261 
1283 
1298  COMMIT_WAIT
1299  };
1300 
1306  Status SetExternalConsistencyMode(ExternalConsistencyMode m)
1307  WARN_UNUSED_RESULT;
1308 
1326  Status SetMutationBufferSpace(size_t size_bytes) WARN_UNUSED_RESULT;
1327 
1351  Status SetMutationBufferFlushWatermark(double watermark_pct)
1352  WARN_UNUSED_RESULT;
1353 
1375  Status SetMutationBufferFlushInterval(unsigned int millis) WARN_UNUSED_RESULT;
1376 
1401  Status SetMutationBufferMaxNum(unsigned int max_num) WARN_UNUSED_RESULT;
1402 
1408  void SetTimeoutMillis(int millis);
1409 
1413 
1437  Status Apply(KuduWriteOperation* write_op) WARN_UNUSED_RESULT;
1438 
1453  Status Flush() WARN_UNUSED_RESULT;
1454 
1495  void FlushAsync(KuduStatusCallback* cb);
1496 
1499  Status Close() WARN_UNUSED_RESULT;
1500 
1509  bool HasPendingOperations() const;
1510 
1532  int CountBufferedOperations() const
1533  ATTRIBUTE_DEPRECATED("this method is experimental and will disappear "
1534  "in a future release");
1535 
1560  Status SetErrorBufferSpace(size_t size_bytes);
1561 
1571  int CountPendingErrors() const;
1572 
1583  void GetPendingErrors(std::vector<KuduError*>* errors, bool* overflowed);
1584 
1586  KuduClient* client() const;
1587 
1588  private:
1589  class KUDU_NO_EXPORT Data;
1590 
1591  friend class KuduClient;
1592  friend class internal::Batcher;
1593  friend class ClientTest;
1594  FRIEND_TEST(ClientTest, TestAutoFlushBackgroundApplyBlocks);
1595  FRIEND_TEST(ClientTest, TestAutoFlushBackgroundAndErrorCollector);
1596 
1597  explicit KuduSession(const sp::shared_ptr<KuduClient>& client);
1598 
1599  // Owned.
1600  Data* data_;
1601 
1602  DISALLOW_COPY_AND_ASSIGN(KuduSession);
1603 };
1604 
1605 
1610 class KUDU_EXPORT KuduScanner {
1611  public:
1613  enum ReadMode {
1622 
1642  READ_AT_SNAPSHOT
1643  };
1644 
1648  enum OrderMode {
1655 
1660  ORDERED
1661  };
1662 
1666  enum { kScanTimeoutMillis = 30000 };
1667 
1673  explicit KuduScanner(KuduTable* table);
1674  ~KuduScanner();
1675 
1685  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
1686  WARN_UNUSED_RESULT;
1687 
1697  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
1698  WARN_UNUSED_RESULT;
1699 
1705  Status SetProjectedColumns(const std::vector<std::string>& col_names)
1706  WARN_UNUSED_RESULT
1707  ATTRIBUTE_DEPRECATED("use SetProjectedColumnNames() instead");
1708 
1717  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
1718 
1727  Status AddLowerBound(const KuduPartialRow& key);
1728 
1736  Status AddLowerBoundRaw(const Slice& key)
1737  ATTRIBUTE_DEPRECATED("use AddLowerBound() instead");
1738 
1747  Status AddExclusiveUpperBound(const KuduPartialRow& key);
1748 
1756  Status AddExclusiveUpperBoundRaw(const Slice& key)
1757  ATTRIBUTE_DEPRECATED("use AddExclusiveUpperBound() instead");
1758 
1767  Status AddLowerBoundPartitionKeyRaw(const Slice& partition_key);
1768 
1777  Status AddExclusiveUpperBoundPartitionKeyRaw(const Slice& partition_key);
1778 
1785  Status SetCacheBlocks(bool cache_blocks);
1786 
1788  Status Open();
1789 
1805  Status KeepAlive();
1806 
1815  void Close();
1816 
1825  bool HasMoreRows() const;
1826 
1838  Status NextBatch(std::vector<KuduRowResult>* rows)
1839  ATTRIBUTE_DEPRECATED("use NextBatch(KuduScanBatch*) instead");
1840 
1849  Status NextBatch(KuduScanBatch* batch);
1850 
1859  Status GetCurrentServer(KuduTabletServer** server);
1860 
1862  const ResourceMetrics& GetResourceMetrics() const;
1863 
1870  Status SetBatchSizeBytes(uint32_t batch_size);
1871 
1879  Status SetSelection(KuduClient::ReplicaSelection selection)
1880  WARN_UNUSED_RESULT;
1881 
1887  Status SetReadMode(ReadMode read_mode) WARN_UNUSED_RESULT;
1888 
1894  Status SetOrderMode(OrderMode order_mode) WARN_UNUSED_RESULT
1895  ATTRIBUTE_DEPRECATED("use SetFaultTolerant() instead");
1896 
1909  Status SetFaultTolerant() WARN_UNUSED_RESULT;
1910 
1916  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros) WARN_UNUSED_RESULT;
1917 
1930  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
1931 
1937  Status SetTimeoutMillis(int millis);
1938 
1940  KuduSchema GetProjectionSchema() const;
1941 
1947  std::string ToString() const;
1948 
1949  private:
1950  class KUDU_NO_EXPORT Data;
1951 
1952  friend class KuduScanToken;
1953  FRIEND_TEST(ClientTest, TestScanCloseProxy);
1954  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
1955  FRIEND_TEST(ClientTest, TestScanNoBlockCaching);
1956  FRIEND_TEST(ClientTest, TestScanTimeout);
1957  FRIEND_TEST(ClientTest, TestReadAtSnapshotNoTimestampSet);
1958  FRIEND_TEST(ConsistencyITest, TestSnapshotScanTimestampReuse);
1959 
1960  // Owned.
1961  Data* data_;
1962 
1963  DISALLOW_COPY_AND_ASSIGN(KuduScanner);
1964 };
1965 
1986 class KUDU_EXPORT KuduScanToken {
1987  public:
1988 
1989  ~KuduScanToken();
1990 
2001  Status IntoKuduScanner(KuduScanner** scanner) const WARN_UNUSED_RESULT;
2002 
2004  const KuduTablet& tablet() const;
2005 
2013  Status Serialize(std::string* buf) const WARN_UNUSED_RESULT;
2014 
2026  static Status DeserializeIntoScanner(KuduClient* client,
2027  const std::string& serialized_token,
2028  KuduScanner** scanner) WARN_UNUSED_RESULT;
2029 
2030  private:
2031  class KUDU_NO_EXPORT Data;
2032 
2033  friend class KuduScanTokenBuilder;
2034 
2035  KuduScanToken();
2036 
2037  // Owned.
2038  Data* data_;
2039 
2040  DISALLOW_COPY_AND_ASSIGN(KuduScanToken);
2041 };
2042 
2046 class KUDU_EXPORT KuduScanTokenBuilder {
2047  public:
2048 
2054  explicit KuduScanTokenBuilder(KuduTable* table);
2056 
2066  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
2067  WARN_UNUSED_RESULT;
2068 
2070  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
2071  WARN_UNUSED_RESULT;
2072 
2074  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
2075 
2077  Status AddLowerBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
2078 
2087  Status AddUpperBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
2088 
2090  Status SetCacheBlocks(bool cache_blocks) WARN_UNUSED_RESULT;
2091 
2098  Status SetBatchSizeBytes(uint32_t batch_size) WARN_UNUSED_RESULT;
2099 
2107  Status SetSelection(KuduClient::ReplicaSelection selection)
2108  WARN_UNUSED_RESULT;
2109 
2111  Status SetReadMode(KuduScanner::ReadMode read_mode) WARN_UNUSED_RESULT;
2112 
2114  Status SetFaultTolerant() WARN_UNUSED_RESULT;
2115 
2117  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros)
2118  WARN_UNUSED_RESULT;
2119 
2121  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
2122 
2124  Status SetTimeoutMillis(int millis) WARN_UNUSED_RESULT;
2125 
2134  Status Build(std::vector<KuduScanToken*>* tokens) WARN_UNUSED_RESULT;
2135 
2136  private:
2137  class KUDU_NO_EXPORT Data;
2138 
2139  // Owned.
2140  Data* data_;
2141 
2142  DISALLOW_COPY_AND_ASSIGN(KuduScanTokenBuilder);
2143 };
2144 
2145 } // namespace client
2146 } // namespace kudu
2147 #endif
A single row update to be sent to the cluster.
Definition: write_op.h:184
A representation of a table&#39;s schema.
Definition: schema.h:417
A representation of an operation&#39;s outcome.
Definition: status.h:116
A constant cell value with a specific type.
Definition: value.h:33
ExternalConsistencyMode
The possible external consistency modes on which Kudu operates.
Definition: client.h:1263
Definition: callbacks.h:28
A single row insert to be sent to the cluster.
Definition: write_op.h:132
Builder API for specifying or altering a column within a table schema.
Definition: schema.h:230
static const uint64_t kNoTimestamp
Definition: client.h:396
ReplicaSelection
Policy with which to choose amongst multiple replicas.
Definition: client.h:375
A single row upsert to be sent to the cluster.
Definition: write_op.h:157
Builds scan tokens for a table.
Definition: client.h:2046
ComparisonOp
Supported comparison operators.
Definition: scan_predicate.h:39
Alters an existing table based on the provided steps.
Definition: client.h:933
OrderMode
Definition: client.h:1648
Definition: client.h:1654
Smart pointer typedefs for externally-faced code.
A representation of comparison predicate for Kudu queries.
Definition: scan_predicate.h:36
An exclusive bound.
Definition: client.h:668
This class represents an error which occurred in a write operation.
Definition: client.h:1092
A handle for a connection to a cluster.
Definition: client.h:249
An inclusive bound.
Definition: client.h:669
In-memory representation of a remote tablet server.
Definition: client.h:496
The interface for all status callbacks.
Definition: callbacks.h:161
A wrapper around externally allocated data.
Definition: slice.h:43
A representation of a table on a particular cluster.
Definition: client.h:802
This class is a representation of a single scan.
Definition: client.h:1610
ReadMode
The read modes for scanners.
Definition: client.h:1613
A "factory" for KuduClient objects.
Definition: client.h:156
A single-row write operation to be sent to a Kudu table.
Definition: write_op.h:56
Select the LEADER replica.
Definition: client.h:376
RangePartitionBound
Range partition bound type.
Definition: client.h:667
In-memory representation of a remote tablet.
Definition: client.h:556
In-memory representation of a remote tablet&#39;s replica.
Definition: client.h:528
FlushMode
Modes of flush operations.
Definition: client.h:1202
A scan descriptor limited to a single physical contiguous location.
Definition: client.h:1986
A single row delete to be sent to the cluster.
Definition: write_op.h:211
A generic catalog of simple metrics.
Definition: resource_metrics.h:30
A helper class to create a new table with the desired options.
Definition: client.h:586
A row which may only contain values for a subset of the columns.
Definition: partial_row.h:55
Representation of a Kudu client session.
Definition: client.h:1197
A batch of zero or more rows returned by a scan operation.
Definition: scan_batch.h:75
A representation of a time interval.
Definition: monotime.h:43