Kudu C++ client API
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 GetTableSchemaRpc;
73 class LookupRpc;
74 class MetaCache;
75 class RemoteTablet;
76 class RemoteTabletServer;
77 class WriteRpc;
78 } // namespace internal
79 
92 void KUDU_EXPORT InstallLoggingCallback(KuduLoggingCallback* cb);
93 
100 void KUDU_EXPORT UninstallLoggingCallback();
101 
117 void KUDU_EXPORT SetVerboseLogLevel(int level);
118 
128 Status KUDU_EXPORT SetInternalSignalNumber(int signum);
129 
132 std::string KUDU_EXPORT GetShortVersionString();
133 
136 std::string KUDU_EXPORT GetAllVersionInfo();
137 
142 class KUDU_EXPORT KuduClientBuilder {
143  public:
146 
150  KuduClientBuilder& clear_master_server_addrs();
151 
157  KuduClientBuilder& master_server_addrs(const std::vector<std::string>& addrs);
158 
166  KuduClientBuilder& add_master_server_addr(const std::string& addr);
167 
177  KuduClientBuilder& default_admin_operation_timeout(const MonoDelta& timeout);
178 
186  KuduClientBuilder& default_rpc_timeout(const MonoDelta& timeout);
187 
198  Status Build(sp::shared_ptr<KuduClient>* client);
199 
200  private:
201  class KUDU_NO_EXPORT Data;
202 
203  // Owned.
204  Data* data_;
205 
206  DISALLOW_COPY_AND_ASSIGN(KuduClientBuilder);
207 };
208 
235 class KUDU_EXPORT KuduClient : public sp::enable_shared_from_this<KuduClient> {
236  public:
237  ~KuduClient();
238 
243  KuduTableCreator* NewTableCreator();
244 
253  Status IsCreateTableInProgress(const std::string& table_name,
254  bool *create_in_progress);
255 
261  Status DeleteTable(const std::string& table_name);
262 
269  KuduTableAlterer* NewTableAlterer(const std::string& table_name);
270 
279  Status IsAlterTableInProgress(const std::string& table_name,
280  bool *alter_in_progress);
288  Status GetTableSchema(const std::string& table_name,
289  KuduSchema* schema);
290 
297  Status ListTabletServers(std::vector<KuduTabletServer*>* tablet_servers);
298 
306  Status ListTables(std::vector<std::string>* tables,
307  const std::string& filter = "");
308 
316  Status TableExists(const std::string& table_name, bool* exists);
317 
331  Status OpenTable(const std::string& table_name,
332  sp::shared_ptr<KuduTable>* table);
333 
339  sp::shared_ptr<KuduSession> NewSession();
340 
342 
355  Status KUDU_NO_EXPORT GetTablet(const std::string& tablet_id,
356  KuduTablet** tablet);
357 
359 
363 
364  CLOSEST_REPLICA,
365 
367  FIRST_REPLICA
368  };
369 
372  bool IsMultiMaster() const;
373 
375  const MonoDelta& default_admin_operation_timeout() const;
376 
378  const MonoDelta& default_rpc_timeout() const;
379 
382  static const uint64_t kNoTimestamp;
383 
423  uint64_t GetLatestObservedTimestamp() const;
424 
439  void SetLatestObservedTimestamp(uint64_t ht_timestamp);
440 
441  private:
442  class KUDU_NO_EXPORT Data;
443 
444  friend class internal::Batcher;
445  friend class internal::GetTableSchemaRpc;
446  friend class internal::LookupRpc;
447  friend class internal::MetaCache;
448  friend class internal::RemoteTablet;
449  friend class internal::RemoteTabletServer;
450  friend class internal::WriteRpc;
451  friend class ClientTest;
452  friend class KuduClientBuilder;
453  friend class KuduScanner;
454  friend class KuduScanTokenBuilder;
455  friend class KuduSession;
456  friend class KuduTable;
457  friend class KuduTableAlterer;
458  friend class KuduTableCreator;
459 
460  FRIEND_TEST(kudu::ClientStressTest, TestUniqueClientIds);
461  FRIEND_TEST(ClientTest, TestGetTabletServerBlacklist);
462  FRIEND_TEST(ClientTest, TestMasterDown);
463  FRIEND_TEST(ClientTest, TestMasterLookupPermits);
464  FRIEND_TEST(ClientTest, TestMetaCacheExpiry);
465  FRIEND_TEST(ClientTest, TestNonCoveringRangePartitions);
466  FRIEND_TEST(ClientTest, TestReplicatedTabletWritesWithLeaderElection);
467  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
468  FRIEND_TEST(ClientTest, TestScanTimeout);
469  FRIEND_TEST(ClientTest, TestWriteWithDeadMaster);
470  FRIEND_TEST(MasterFailoverTest, TestPauseAfterCreateTableIssued);
471 
472  KuduClient();
473 
474  // Owned.
475  Data* data_;
476 
477  DISALLOW_COPY_AND_ASSIGN(KuduClient);
478 };
479 
481 class KUDU_EXPORT KuduTabletServer {
482  public:
483  ~KuduTabletServer();
484 
487  const std::string& uuid() const;
488 
491  const std::string& hostname() const;
492 
495  uint16_t port() const;
496 
497  private:
498  class KUDU_NO_EXPORT Data;
499 
500  friend class KuduClient;
501  friend class KuduScanner;
502  friend class KuduScanTokenBuilder;
503 
505 
506  // Owned.
507  Data* data_;
508 
509  DISALLOW_COPY_AND_ASSIGN(KuduTabletServer);
510 };
511 
513 class KUDU_EXPORT KuduReplica {
514  public:
515  ~KuduReplica();
516 
521  bool is_leader() const;
522 
524  const KuduTabletServer& ts() const;
525 
526  private:
527  friend class KuduClient;
528  friend class KuduScanTokenBuilder;
529 
530  class KUDU_NO_EXPORT Data;
531 
532  KuduReplica();
533 
534  // Owned.
535  Data* data_;
536 
537  DISALLOW_COPY_AND_ASSIGN(KuduReplica);
538 };
539 
541 class KUDU_EXPORT KuduTablet {
542  public:
543  ~KuduTablet();
544 
547  const std::string& id() const;
548 
554  const std::vector<const KuduReplica*>& replicas() const;
555 
556  private:
557  friend class KuduClient;
558  friend class KuduScanTokenBuilder;
559 
560  class KUDU_NO_EXPORT Data;
561 
562  KuduTablet();
563 
564  // Owned.
565  Data* data_;
566 
567  DISALLOW_COPY_AND_ASSIGN(KuduTablet);
568 };
569 
571 class KUDU_EXPORT KuduTableCreator {
572  public:
573  ~KuduTableCreator();
574 
586  KuduTableCreator& table_name(const std::string& name);
587 
598  KuduTableCreator& schema(const KuduSchema* schema);
599 
616  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
617  int32_t num_buckets);
618 
634  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
635  int32_t num_buckets, int32_t seed);
636 
649  KuduTableCreator& set_range_partition_columns(const std::vector<std::string>& columns);
650 
655  };
656 
685  KuduTableCreator& add_range_partition(KuduPartialRow* lower_bound,
686  KuduPartialRow* upper_bound,
687  RangePartitionBound lower_bound_type = INCLUSIVE_BOUND,
688  RangePartitionBound upper_bound_type = EXCLUSIVE_BOUND);
689 
698  KuduTableCreator& add_range_partition_split(KuduPartialRow* split_row);
699 
705  KuduTableCreator& split_rows(const std::vector<const KuduPartialRow*>& split_rows)
706  ATTRIBUTE_DEPRECATED("use add_range_partition_split() instead");
707 
717  KuduTableCreator& num_replicas(int n_replicas);
718 
728  KuduTableCreator& timeout(const MonoDelta& timeout);
729 
737  KuduTableCreator& wait(bool wait);
738 
752  Status Create();
753 
754  private:
755  class KUDU_NO_EXPORT Data;
756 
757  friend class KuduClient;
758 
759  explicit KuduTableCreator(KuduClient* client);
760 
761  // Owned.
762  Data* data_;
763 
764  DISALLOW_COPY_AND_ASSIGN(KuduTableCreator);
765 };
766 
787 class KUDU_EXPORT KuduTable : public sp::enable_shared_from_this<KuduTable> {
788  public:
789  ~KuduTable();
790 
792  const std::string& name() const;
793 
801  const std::string& id() const;
802 
804  const KuduSchema& schema() const;
805 
807  int num_replicas() const;
808 
812  KuduInsert* NewInsert();
813 
817  KuduUpsert* NewUpsert();
818 
822  KuduUpdate* NewUpdate();
823 
827  KuduDelete* NewDelete();
828 
852  KuduPredicate* NewComparisonPredicate(const Slice& col_name,
854  KuduValue* value);
855 
879  KuduPredicate* NewInListPredicate(const Slice& col_name,
880  std::vector<KuduValue*>* values);
881 
884  KuduClient* client() const;
885 
887  const PartitionSchema& partition_schema() const;
888 
889  private:
890  class KUDU_NO_EXPORT Data;
891 
892  friend class KuduClient;
893 
894  KuduTable(const sp::shared_ptr<KuduClient>& client,
895  const std::string& name,
896  const std::string& id,
897  int num_replicas,
898  const KuduSchema& schema,
899  const PartitionSchema& partition_schema);
900 
901  // Owned.
902  Data* data_;
903 
904  DISALLOW_COPY_AND_ASSIGN(KuduTable);
905 };
906 
918 class KUDU_EXPORT KuduTableAlterer {
919  public:
920  ~KuduTableAlterer();
921 
927  KuduTableAlterer* RenameTo(const std::string& new_name);
928 
938  KuduColumnSpec* AddColumn(const std::string& name);
939 
948  KuduColumnSpec* AlterColumn(const std::string& name);
949 
957  KuduTableAlterer* DropColumn(const std::string& name);
958 
990  KuduTableAlterer* AddRangePartition(
991  KuduPartialRow* lower_bound,
992  KuduPartialRow* upper_bound,
995 
1023  KuduTableAlterer* DropRangePartition(
1024  KuduPartialRow* lower_bound,
1025  KuduPartialRow* upper_bound,
1028 
1038  KuduTableAlterer* timeout(const MonoDelta& timeout);
1039 
1051  KuduTableAlterer* wait(bool wait);
1052 
1057  Status Alter();
1058 
1059  private:
1060  class KUDU_NO_EXPORT Data;
1061  friend class KuduClient;
1062 
1063  KuduTableAlterer(KuduClient* client,
1064  const std::string& name);
1065 
1066  // Owned.
1067  Data* data_;
1068 
1069  DISALLOW_COPY_AND_ASSIGN(KuduTableAlterer);
1070 };
1071 
1077 class KUDU_EXPORT KuduError {
1078  public:
1079  ~KuduError();
1080 
1082  const Status& status() const;
1083 
1085  const KuduWriteOperation& failed_op() const;
1086 
1094  KuduWriteOperation* release_failed_op();
1095 
1106  bool was_possibly_successful() const;
1107 
1108  private:
1109  class KUDU_NO_EXPORT Data;
1110 
1111  friend class internal::Batcher;
1112  friend class KuduSession;
1113 
1114  KuduError(KuduWriteOperation* failed_op, const Status& error);
1115 
1116  // Owned.
1117  Data* data_;
1118 
1119  DISALLOW_COPY_AND_ASSIGN(KuduError);
1120 };
1121 
1122 
1181 class KUDU_EXPORT KuduSession : public sp::enable_shared_from_this<KuduSession> {
1182  public:
1183  ~KuduSession();
1184 
1186  enum FlushMode {
1192 
1212 
1216  MANUAL_FLUSH
1217  };
1218 
1227  Status SetFlushMode(FlushMode m) WARN_UNUSED_RESULT;
1228 
1250 
1265  COMMIT_WAIT
1266  };
1267 
1273  Status SetExternalConsistencyMode(ExternalConsistencyMode m)
1274  WARN_UNUSED_RESULT;
1275 
1293  Status SetMutationBufferSpace(size_t size_bytes) WARN_UNUSED_RESULT;
1294 
1318  Status SetMutationBufferFlushWatermark(double watermark_pct)
1319  WARN_UNUSED_RESULT;
1320 
1342  Status SetMutationBufferFlushInterval(unsigned int millis) WARN_UNUSED_RESULT;
1343 
1368  Status SetMutationBufferMaxNum(unsigned int max_num) WARN_UNUSED_RESULT;
1369 
1375  void SetTimeoutMillis(int millis);
1376 
1380 
1404  Status Apply(KuduWriteOperation* write_op) WARN_UNUSED_RESULT;
1405 
1420  Status Flush() WARN_UNUSED_RESULT;
1421 
1462  void FlushAsync(KuduStatusCallback* cb);
1463 
1466  Status Close() WARN_UNUSED_RESULT;
1467 
1476  bool HasPendingOperations() const;
1477 
1499  int CountBufferedOperations() const
1500  ATTRIBUTE_DEPRECATED("this method is experimental and will disappear "
1501  "in a future release");
1502 
1509  int CountPendingErrors() const;
1510 
1521  void GetPendingErrors(std::vector<KuduError*>* errors, bool* overflowed);
1522 
1524  KuduClient* client() const;
1525 
1526  private:
1527  class KUDU_NO_EXPORT Data;
1528 
1529  friend class KuduClient;
1530  friend class internal::Batcher;
1531  friend class ClientTest;
1532  FRIEND_TEST(ClientTest, TestAutoFlushBackgroundApplyBlocks);
1533  FRIEND_TEST(ClientTest, TestAutoFlushBackgroundAndErrorCollector);
1534 
1535  explicit KuduSession(const sp::shared_ptr<KuduClient>& client);
1536 
1537  // Owned.
1538  Data* data_;
1539 
1540  DISALLOW_COPY_AND_ASSIGN(KuduSession);
1541 };
1542 
1543 
1548 class KUDU_EXPORT KuduScanner {
1549  public:
1551  enum ReadMode {
1560 
1580  READ_AT_SNAPSHOT
1581  };
1582 
1586  enum OrderMode {
1593 
1598  ORDERED
1599  };
1600 
1604  enum { kScanTimeoutMillis = 30000 };
1605 
1611  explicit KuduScanner(KuduTable* table);
1612  ~KuduScanner();
1613 
1623  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
1624  WARN_UNUSED_RESULT;
1625 
1635  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
1636  WARN_UNUSED_RESULT;
1637 
1643  Status SetProjectedColumns(const std::vector<std::string>& col_names)
1644  WARN_UNUSED_RESULT
1645  ATTRIBUTE_DEPRECATED("use SetProjectedColumnNames() instead");
1646 
1655  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
1656 
1665  Status AddLowerBound(const KuduPartialRow& key);
1666 
1674  Status AddLowerBoundRaw(const Slice& key)
1675  ATTRIBUTE_DEPRECATED("use AddLowerBound() instead");
1676 
1685  Status AddExclusiveUpperBound(const KuduPartialRow& key);
1686 
1694  Status AddExclusiveUpperBoundRaw(const Slice& key)
1695  ATTRIBUTE_DEPRECATED("use AddExclusiveUpperBound() instead");
1696 
1705  Status AddLowerBoundPartitionKeyRaw(const Slice& partition_key);
1706 
1715  Status AddExclusiveUpperBoundPartitionKeyRaw(const Slice& partition_key);
1716 
1723  Status SetCacheBlocks(bool cache_blocks);
1724 
1726  Status Open();
1727 
1743  Status KeepAlive();
1744 
1753  void Close();
1754 
1763  bool HasMoreRows() const;
1764 
1776  Status NextBatch(std::vector<KuduRowResult>* rows)
1777  ATTRIBUTE_DEPRECATED("use NextBatch(KuduScanBatch*) instead");
1778 
1787  Status NextBatch(KuduScanBatch* batch);
1788 
1797  Status GetCurrentServer(KuduTabletServer** server);
1798 
1800  const ResourceMetrics& GetResourceMetrics() const;
1801 
1808  Status SetBatchSizeBytes(uint32_t batch_size);
1809 
1817  Status SetSelection(KuduClient::ReplicaSelection selection)
1818  WARN_UNUSED_RESULT;
1819 
1825  Status SetReadMode(ReadMode read_mode) WARN_UNUSED_RESULT;
1826 
1832  Status SetOrderMode(OrderMode order_mode) WARN_UNUSED_RESULT
1833  ATTRIBUTE_DEPRECATED("use SetFaultTolerant() instead");
1834 
1847  Status SetFaultTolerant() WARN_UNUSED_RESULT;
1848 
1854  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros) WARN_UNUSED_RESULT;
1855 
1868  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
1869 
1875  Status SetTimeoutMillis(int millis);
1876 
1878  KuduSchema GetProjectionSchema() const;
1879 
1881  std::string ToString() const;
1882 
1883  private:
1884  class KUDU_NO_EXPORT Data;
1885 
1886  friend class KuduScanToken;
1887  FRIEND_TEST(ClientTest, TestScanCloseProxy);
1888  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
1889  FRIEND_TEST(ClientTest, TestScanNoBlockCaching);
1890  FRIEND_TEST(ClientTest, TestScanTimeout);
1891 
1892  // Owned.
1893  Data* data_;
1894 
1895  DISALLOW_COPY_AND_ASSIGN(KuduScanner);
1896 };
1897 
1918 class KUDU_EXPORT KuduScanToken {
1919  public:
1920 
1921  ~KuduScanToken();
1922 
1933  Status IntoKuduScanner(KuduScanner** scanner) const WARN_UNUSED_RESULT;
1934 
1936  const KuduTablet& tablet() const;
1937 
1945  Status Serialize(std::string* buf) const WARN_UNUSED_RESULT;
1946 
1958  static Status DeserializeIntoScanner(KuduClient* client,
1959  const std::string& serialized_token,
1960  KuduScanner** scanner) WARN_UNUSED_RESULT;
1961 
1962  private:
1963  class KUDU_NO_EXPORT Data;
1964 
1965  friend class KuduScanTokenBuilder;
1966 
1967  KuduScanToken();
1968 
1969  // Owned.
1970  Data* data_;
1971 
1972  DISALLOW_COPY_AND_ASSIGN(KuduScanToken);
1973 };
1974 
1978 class KUDU_EXPORT KuduScanTokenBuilder {
1979  public:
1980 
1986  explicit KuduScanTokenBuilder(KuduTable* table);
1988 
1998  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
1999  WARN_UNUSED_RESULT;
2000 
2002  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
2003  WARN_UNUSED_RESULT;
2004 
2006  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
2007 
2009  Status AddLowerBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
2010 
2019  Status AddUpperBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
2020 
2022  Status SetCacheBlocks(bool cache_blocks) WARN_UNUSED_RESULT;
2023 
2030  Status SetBatchSizeBytes(uint32_t batch_size) WARN_UNUSED_RESULT;
2031 
2039  Status SetSelection(KuduClient::ReplicaSelection selection)
2040  WARN_UNUSED_RESULT;
2041 
2043  Status SetReadMode(KuduScanner::ReadMode read_mode) WARN_UNUSED_RESULT;
2044 
2046  Status SetFaultTolerant() WARN_UNUSED_RESULT;
2047 
2049  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros)
2050  WARN_UNUSED_RESULT;
2051 
2053  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
2054 
2056  Status SetTimeoutMillis(int millis) WARN_UNUSED_RESULT;
2057 
2066  Status Build(std::vector<KuduScanToken*>* tokens) WARN_UNUSED_RESULT;
2067 
2069  std::string ToString() const;
2070 
2071  private:
2072  class KUDU_NO_EXPORT Data;
2073 
2074  // Owned.
2075  Data* data_;
2076 
2077  DISALLOW_COPY_AND_ASSIGN(KuduScanTokenBuilder);
2078 };
2079 
2080 } // namespace client
2081 } // namespace kudu
2082 #endif
A single row update to be sent to the cluster.
Definition: write_op.h:178
A representation of a table's schema.
Definition: schema.h:414
A representation of an operation'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:1230
A single row insert to be sent to the cluster.
Definition: write_op.h:126
Builder API for specifying or altering a column within a table schema.
Definition: schema.h:227
static const uint64_t kNoTimestamp
Definition: client.h:382
ReplicaSelection
Policy with which to choose amongst multiple replicas.
Definition: client.h:361
A single row upsert to be sent to the cluster.
Definition: write_op.h:151
Builds scan tokens for a table.
Definition: client.h:1978
ComparisonOp
Supported comparison operators.
Definition: scan_predicate.h:39
Alters an existing table based on the provided steps.
Definition: client.h:918
OrderMode
Definition: client.h:1586
Definition: client.h:1592
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:653
This class represents an error which occurred in a write operation.
Definition: client.h:1077
A handle for a connection to a cluster.
Definition: client.h:235
An inclusive bound.
Definition: client.h:654
In-memory representation of a remote tablet server.
Definition: client.h:481
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:787
This class is a representation of a single scan.
Definition: client.h:1548
ReadMode
The read modes for scanners.
Definition: client.h:1551
A "factory" for KuduClient objects.
Definition: client.h:142
A single-row write operation to be sent to a Kudu table.
Definition: write_op.h:55
Select the LEADER replica.
Definition: client.h:362
RangePartitionBound
Range partition bound type.
Definition: client.h:652
In-memory representation of a remote tablet.
Definition: client.h:541
In-memory representation of a remote tablet's replica.
Definition: client.h:513
FlushMode
Modes of flush operations.
Definition: client.h:1186
A single row delete to be sent to the cluster.
Definition: write_op.h:205
A helper class to create a new table with the desired options.
Definition: client.h:571
Representation of a Kudu client session.
Definition: client.h:1181
A row which may only contain values for a subset of the columns.
Definition: partial_row.h:53
A representation of a time interval.
Definition: monotime.h:43