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 #if _GLIBCXX_USE_CXX11_ABI
51 #error \
52  "Kudu will not function properly if built with gcc 5's new ABI. " \
53  "Please modify your application to set -D_GLIBCXX_USE_CXX11_ABI=0. " \
54  "For more information about the new ABI, see " \
55  "https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html."
56 #endif
57 
58 namespace kudu {
59 
60 class ClientStressTest_TestUniqueClientIds_Test;
61 class LinkedListTester;
62 class PartitionSchema;
63 
64 namespace client {
65 
66 class KuduLoggingCallback;
67 class KuduScanToken;
68 class KuduSession;
69 class KuduStatusCallback;
70 class KuduTable;
71 class KuduTableAlterer;
72 class KuduTableCreator;
73 class KuduTablet;
74 class KuduTabletServer;
75 class KuduValue;
76 class KuduWriteOperation;
77 
78 namespace internal {
79 class Batcher;
80 class GetTableSchemaRpc;
81 class LookupRpc;
82 class MetaCache;
83 class RemoteTablet;
84 class RemoteTabletServer;
85 class WriteRpc;
86 } // namespace internal
87 
100 void KUDU_EXPORT InstallLoggingCallback(KuduLoggingCallback* cb);
101 
108 void KUDU_EXPORT UninstallLoggingCallback();
109 
125 void KUDU_EXPORT SetVerboseLogLevel(int level);
126 
136 Status KUDU_EXPORT SetInternalSignalNumber(int signum);
137 
140 std::string KUDU_EXPORT GetShortVersionString();
141 
144 std::string KUDU_EXPORT GetAllVersionInfo();
145 
150 class KUDU_EXPORT KuduClientBuilder {
151  public:
154 
158  KuduClientBuilder& clear_master_server_addrs();
159 
165  KuduClientBuilder& master_server_addrs(const std::vector<std::string>& addrs);
166 
174  KuduClientBuilder& add_master_server_addr(const std::string& addr);
175 
185  KuduClientBuilder& default_admin_operation_timeout(const MonoDelta& timeout);
186 
194  KuduClientBuilder& default_rpc_timeout(const MonoDelta& timeout);
195 
206  Status Build(sp::shared_ptr<KuduClient>* client);
207 
208  private:
209  class KUDU_NO_EXPORT Data;
210 
211  // Owned.
212  Data* data_;
213 
214  DISALLOW_COPY_AND_ASSIGN(KuduClientBuilder);
215 };
216 
243 class KUDU_EXPORT KuduClient : public sp::enable_shared_from_this<KuduClient> {
244  public:
245  ~KuduClient();
246 
251  KuduTableCreator* NewTableCreator();
252 
261  Status IsCreateTableInProgress(const std::string& table_name,
262  bool *create_in_progress);
263 
269  Status DeleteTable(const std::string& table_name);
270 
277  KuduTableAlterer* NewTableAlterer(const std::string& table_name);
278 
287  Status IsAlterTableInProgress(const std::string& table_name,
288  bool *alter_in_progress);
296  Status GetTableSchema(const std::string& table_name,
297  KuduSchema* schema);
298 
305  Status ListTabletServers(std::vector<KuduTabletServer*>* tablet_servers);
306 
314  Status ListTables(std::vector<std::string>* tables,
315  const std::string& filter = "");
316 
324  Status TableExists(const std::string& table_name, bool* exists);
325 
339  Status OpenTable(const std::string& table_name,
340  sp::shared_ptr<KuduTable>* table);
341 
347  sp::shared_ptr<KuduSession> NewSession();
348 
350 
363  Status KUDU_NO_EXPORT GetTablet(const std::string& tablet_id,
364  KuduTablet** tablet);
365 
367 
371 
372  CLOSEST_REPLICA,
373 
375  FIRST_REPLICA
376  };
377 
380  bool IsMultiMaster() const;
381 
383  const MonoDelta& default_admin_operation_timeout() const;
384 
386  const MonoDelta& default_rpc_timeout() const;
387 
390  static const uint64_t kNoTimestamp;
391 
399  uint64_t GetLatestObservedTimestamp() const;
400 
412  void SetLatestObservedTimestamp(uint64_t ht_timestamp);
413 
414  private:
415  class KUDU_NO_EXPORT Data;
416 
417  friend class internal::Batcher;
418  friend class internal::GetTableSchemaRpc;
419  friend class internal::LookupRpc;
420  friend class internal::MetaCache;
421  friend class internal::RemoteTablet;
422  friend class internal::RemoteTabletServer;
423  friend class internal::WriteRpc;
424  friend class ClientTest;
425  friend class KuduClientBuilder;
426  friend class KuduScanner;
427  friend class KuduScanTokenBuilder;
428  friend class KuduSession;
429  friend class KuduTable;
430  friend class KuduTableAlterer;
431  friend class KuduTableCreator;
432 
433  FRIEND_TEST(kudu::ClientStressTest, TestUniqueClientIds);
434  FRIEND_TEST(ClientTest, TestGetTabletServerBlacklist);
435  FRIEND_TEST(ClientTest, TestMasterDown);
436  FRIEND_TEST(ClientTest, TestMasterLookupPermits);
437  FRIEND_TEST(ClientTest, TestMetaCacheExpiry);
438  FRIEND_TEST(ClientTest, TestNonCoveringRangePartitions);
439  FRIEND_TEST(ClientTest, TestReplicatedTabletWritesWithLeaderElection);
440  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
441  FRIEND_TEST(ClientTest, TestScanTimeout);
442  FRIEND_TEST(ClientTest, TestWriteWithDeadMaster);
443  FRIEND_TEST(MasterFailoverTest, TestPauseAfterCreateTableIssued);
444 
445  KuduClient();
446 
447  // Owned.
448  Data* data_;
449 
450  DISALLOW_COPY_AND_ASSIGN(KuduClient);
451 };
452 
454 class KUDU_EXPORT KuduTabletServer {
455  public:
456  ~KuduTabletServer();
457 
460  const std::string& uuid() const;
461 
464  const std::string& hostname() const;
465 
468  uint16_t port() const;
469 
470  private:
471  class KUDU_NO_EXPORT Data;
472 
473  friend class KuduClient;
474  friend class KuduScanner;
475  friend class KuduScanTokenBuilder;
476 
478 
479  // Owned.
480  Data* data_;
481 
482  DISALLOW_COPY_AND_ASSIGN(KuduTabletServer);
483 };
484 
486 class KUDU_EXPORT KuduReplica {
487  public:
488  ~KuduReplica();
489 
494  bool is_leader() const;
495 
497  const KuduTabletServer& ts() const;
498 
499  private:
500  friend class KuduClient;
501  friend class KuduScanTokenBuilder;
502 
503  class KUDU_NO_EXPORT Data;
504 
505  KuduReplica();
506 
507  // Owned.
508  Data* data_;
509 
510  DISALLOW_COPY_AND_ASSIGN(KuduReplica);
511 };
512 
514 class KUDU_EXPORT KuduTablet {
515  public:
516  ~KuduTablet();
517 
520  const std::string& id() const;
521 
527  const std::vector<const KuduReplica*>& replicas() const;
528 
529  private:
530  friend class KuduClient;
531  friend class KuduScanTokenBuilder;
532 
533  class KUDU_NO_EXPORT Data;
534 
535  KuduTablet();
536 
537  // Owned.
538  Data* data_;
539 
540  DISALLOW_COPY_AND_ASSIGN(KuduTablet);
541 };
542 
544 class KUDU_EXPORT KuduTableCreator {
545  public:
546  ~KuduTableCreator();
547 
559  KuduTableCreator& table_name(const std::string& name);
560 
571  KuduTableCreator& schema(const KuduSchema* schema);
572 
589  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
590  int32_t num_buckets);
591 
607  KuduTableCreator& add_hash_partitions(const std::vector<std::string>& columns,
608  int32_t num_buckets, int32_t seed);
609 
622  KuduTableCreator& set_range_partition_columns(const std::vector<std::string>& columns);
623 
628  };
629 
658  KuduTableCreator& add_range_partition(KuduPartialRow* lower_bound,
659  KuduPartialRow* upper_bound,
660  RangePartitionBound lower_bound_type = INCLUSIVE_BOUND,
661  RangePartitionBound upper_bound_type = EXCLUSIVE_BOUND);
662 
671  KuduTableCreator& add_range_partition_split(KuduPartialRow* split_row);
672 
678  KuduTableCreator& split_rows(const std::vector<const KuduPartialRow*>& split_rows);
679 
689  KuduTableCreator& num_replicas(int n_replicas);
690 
700  KuduTableCreator& timeout(const MonoDelta& timeout);
701 
709  KuduTableCreator& wait(bool wait);
710 
724  Status Create();
725 
726  private:
727  class KUDU_NO_EXPORT Data;
728 
729  friend class KuduClient;
730 
731  explicit KuduTableCreator(KuduClient* client);
732 
733  // Owned.
734  Data* data_;
735 
736  DISALLOW_COPY_AND_ASSIGN(KuduTableCreator);
737 };
738 
759 class KUDU_EXPORT KuduTable : public sp::enable_shared_from_this<KuduTable> {
760  public:
761  ~KuduTable();
762 
764  const std::string& name() const;
765 
773  const std::string& id() const;
774 
776  const KuduSchema& schema() const;
777 
779  int num_replicas() const;
780 
784  KuduInsert* NewInsert();
785 
789  KuduUpsert* NewUpsert();
790 
794  KuduUpdate* NewUpdate();
795 
799  KuduDelete* NewDelete();
800 
824  KuduPredicate* NewComparisonPredicate(const Slice& col_name,
826  KuduValue* value);
827 
830  KuduClient* client() const;
831 
833  const PartitionSchema& partition_schema() const;
834 
835  private:
836  class KUDU_NO_EXPORT Data;
837 
838  friend class KuduClient;
839 
840  KuduTable(const sp::shared_ptr<KuduClient>& client,
841  const std::string& name,
842  const std::string& id,
843  int num_replicas,
844  const KuduSchema& schema,
845  const PartitionSchema& partition_schema);
846 
847  // Owned.
848  Data* data_;
849 
850  DISALLOW_COPY_AND_ASSIGN(KuduTable);
851 };
852 
864 class KUDU_EXPORT KuduTableAlterer {
865  public:
866  ~KuduTableAlterer();
867 
873  KuduTableAlterer* RenameTo(const std::string& new_name);
874 
884  KuduColumnSpec* AddColumn(const std::string& name);
885 
894  KuduColumnSpec* AlterColumn(const std::string& name);
895 
903  KuduTableAlterer* DropColumn(const std::string& name);
904 
936  KuduTableAlterer* AddRangePartition(
937  KuduPartialRow* lower_bound,
938  KuduPartialRow* upper_bound,
941 
969  KuduTableAlterer* DropRangePartition(
970  KuduPartialRow* lower_bound,
971  KuduPartialRow* upper_bound,
974 
984  KuduTableAlterer* timeout(const MonoDelta& timeout);
985 
997  KuduTableAlterer* wait(bool wait);
998 
1003  Status Alter();
1004 
1005  private:
1006  class KUDU_NO_EXPORT Data;
1007  friend class KuduClient;
1008 
1009  KuduTableAlterer(KuduClient* client,
1010  const std::string& name);
1011 
1012  // Owned.
1013  Data* data_;
1014 
1015  DISALLOW_COPY_AND_ASSIGN(KuduTableAlterer);
1016 };
1017 
1023 class KUDU_EXPORT KuduError {
1024  public:
1025  ~KuduError();
1026 
1028  const Status& status() const;
1029 
1031  const KuduWriteOperation& failed_op() const;
1032 
1040  KuduWriteOperation* release_failed_op();
1041 
1052  bool was_possibly_successful() const;
1053 
1054  private:
1055  class KUDU_NO_EXPORT Data;
1056 
1057  friend class internal::Batcher;
1058  friend class KuduSession;
1059 
1060  KuduError(KuduWriteOperation* failed_op, const Status& error);
1061 
1062  // Owned.
1063  Data* data_;
1064 
1065  DISALLOW_COPY_AND_ASSIGN(KuduError);
1066 };
1067 
1068 
1127 class KUDU_EXPORT KuduSession : public sp::enable_shared_from_this<KuduSession> {
1128  public:
1129  ~KuduSession();
1130 
1132  enum FlushMode {
1138 
1158 
1162  MANUAL_FLUSH
1163  };
1164 
1173  Status SetFlushMode(FlushMode m) WARN_UNUSED_RESULT;
1174 
1196 
1211  COMMIT_WAIT
1212  };
1213 
1219  Status SetExternalConsistencyMode(ExternalConsistencyMode m)
1220  WARN_UNUSED_RESULT;
1221 
1239  Status SetMutationBufferSpace(size_t size_bytes) WARN_UNUSED_RESULT;
1240 
1264  Status SetMutationBufferFlushWatermark(double watermark_pct)
1265  WARN_UNUSED_RESULT;
1266 
1288  Status SetMutationBufferFlushInterval(unsigned int millis) WARN_UNUSED_RESULT;
1289 
1314  Status SetMutationBufferMaxNum(unsigned int max_num) WARN_UNUSED_RESULT;
1315 
1321  void SetTimeoutMillis(int millis);
1322 
1326 
1350  Status Apply(KuduWriteOperation* write_op) WARN_UNUSED_RESULT;
1351 
1366  Status Flush() WARN_UNUSED_RESULT;
1367 
1408  void FlushAsync(KuduStatusCallback* cb);
1409 
1412  Status Close() WARN_UNUSED_RESULT;
1413 
1422  bool HasPendingOperations() const;
1423 
1435  int CountBufferedOperations() const;
1436 
1443  int CountPendingErrors() const;
1444 
1455  void GetPendingErrors(std::vector<KuduError*>* errors, bool* overflowed);
1456 
1458  KuduClient* client() const;
1459 
1460  private:
1461  class KUDU_NO_EXPORT Data;
1462 
1463  friend class KuduClient;
1464  friend class internal::Batcher;
1465  friend class ClientTest;
1466  FRIEND_TEST(ClientTest, TestAutoFlushBackgroundApplyBlocks);
1467 
1468  explicit KuduSession(const sp::shared_ptr<KuduClient>& client);
1469 
1470  // Owned.
1471  Data* data_;
1472 
1473  DISALLOW_COPY_AND_ASSIGN(KuduSession);
1474 };
1475 
1476 
1481 class KUDU_EXPORT KuduScanner {
1482  public:
1484  enum ReadMode {
1493 
1512  READ_AT_SNAPSHOT
1513  };
1514 
1518  enum OrderMode {
1525 
1530  ORDERED
1531  };
1532 
1536  enum { kScanTimeoutMillis = 30000 };
1537 
1543  explicit KuduScanner(KuduTable* table);
1544  ~KuduScanner();
1545 
1555  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
1556  WARN_UNUSED_RESULT;
1557 
1567  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
1568  WARN_UNUSED_RESULT;
1569 
1575  Status SetProjectedColumns(const std::vector<std::string>& col_names)
1576  WARN_UNUSED_RESULT;
1577 
1586  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
1587 
1596  Status AddLowerBound(const KuduPartialRow& key);
1597 
1605  Status AddLowerBoundRaw(const Slice& key);
1606 
1615  Status AddExclusiveUpperBound(const KuduPartialRow& key);
1616 
1624  Status AddExclusiveUpperBoundRaw(const Slice& key);
1625 
1634  Status AddLowerBoundPartitionKeyRaw(const Slice& partition_key);
1635 
1644  Status AddExclusiveUpperBoundPartitionKeyRaw(const Slice& partition_key);
1645 
1652  Status SetCacheBlocks(bool cache_blocks);
1653 
1655  Status Open();
1656 
1672  Status KeepAlive();
1673 
1682  void Close();
1683 
1692  bool HasMoreRows() const;
1693 
1705  Status NextBatch(std::vector<KuduRowResult>* rows);
1706 
1715  Status NextBatch(KuduScanBatch* batch);
1716 
1725  Status GetCurrentServer(KuduTabletServer** server);
1726 
1728  const ResourceMetrics& GetResourceMetrics() const;
1729 
1736  Status SetBatchSizeBytes(uint32_t batch_size);
1737 
1745  Status SetSelection(KuduClient::ReplicaSelection selection)
1746  WARN_UNUSED_RESULT;
1747 
1753  Status SetReadMode(ReadMode read_mode) WARN_UNUSED_RESULT;
1754 
1760  Status SetOrderMode(OrderMode order_mode) WARN_UNUSED_RESULT;
1761 
1774  Status SetFaultTolerant() WARN_UNUSED_RESULT;
1775 
1781  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros) WARN_UNUSED_RESULT;
1782 
1789  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
1790 
1796  Status SetTimeoutMillis(int millis);
1797 
1799  KuduSchema GetProjectionSchema() const;
1800 
1802  std::string ToString() const;
1803 
1804  private:
1805  class KUDU_NO_EXPORT Data;
1806 
1807  friend class KuduScanToken;
1808  FRIEND_TEST(ClientTest, TestScanCloseProxy);
1809  FRIEND_TEST(ClientTest, TestScanFaultTolerance);
1810  FRIEND_TEST(ClientTest, TestScanNoBlockCaching);
1811  FRIEND_TEST(ClientTest, TestScanTimeout);
1812 
1813  // Owned.
1814  Data* data_;
1815 
1816  DISALLOW_COPY_AND_ASSIGN(KuduScanner);
1817 };
1818 
1839 class KUDU_EXPORT KuduScanToken {
1840  public:
1841 
1842  ~KuduScanToken();
1843 
1854  Status IntoKuduScanner(KuduScanner** scanner) const WARN_UNUSED_RESULT;
1855 
1857  const KuduTablet& tablet() const;
1858 
1866  Status Serialize(std::string* buf) const WARN_UNUSED_RESULT;
1867 
1879  static Status DeserializeIntoScanner(KuduClient* client,
1880  const std::string& serialized_token,
1881  KuduScanner** scanner) WARN_UNUSED_RESULT;
1882 
1883  private:
1884  class KUDU_NO_EXPORT Data;
1885 
1886  friend class KuduScanTokenBuilder;
1887 
1888  KuduScanToken();
1889 
1890  // Owned.
1891  Data* data_;
1892 
1893  DISALLOW_COPY_AND_ASSIGN(KuduScanToken);
1894 };
1895 
1899 class KUDU_EXPORT KuduScanTokenBuilder {
1900  public:
1901 
1907  explicit KuduScanTokenBuilder(KuduTable* table);
1909 
1919  Status SetProjectedColumnNames(const std::vector<std::string>& col_names)
1920  WARN_UNUSED_RESULT;
1921 
1923  Status SetProjectedColumnIndexes(const std::vector<int>& col_indexes)
1924  WARN_UNUSED_RESULT;
1925 
1927  Status AddConjunctPredicate(KuduPredicate* pred) WARN_UNUSED_RESULT;
1928 
1930  Status AddLowerBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
1931 
1940  Status AddUpperBound(const KuduPartialRow& key) WARN_UNUSED_RESULT;
1941 
1943  Status SetCacheBlocks(bool cache_blocks) WARN_UNUSED_RESULT;
1944 
1951  Status SetBatchSizeBytes(uint32_t batch_size) WARN_UNUSED_RESULT;
1952 
1960  Status SetSelection(KuduClient::ReplicaSelection selection)
1961  WARN_UNUSED_RESULT;
1962 
1964  Status SetReadMode(KuduScanner::ReadMode read_mode) WARN_UNUSED_RESULT;
1965 
1967  Status SetFaultTolerant() WARN_UNUSED_RESULT;
1968 
1970  Status SetSnapshotMicros(uint64_t snapshot_timestamp_micros)
1971  WARN_UNUSED_RESULT;
1972 
1974  Status SetSnapshotRaw(uint64_t snapshot_timestamp) WARN_UNUSED_RESULT;
1975 
1977  Status SetTimeoutMillis(int millis) WARN_UNUSED_RESULT;
1978 
1987  Status Build(std::vector<KuduScanToken*>* tokens) WARN_UNUSED_RESULT;
1988 
1990  std::string ToString() const;
1991 
1992  private:
1993  class KUDU_NO_EXPORT Data;
1994 
1995  // Owned.
1996  Data* data_;
1997 
1998  DISALLOW_COPY_AND_ASSIGN(KuduScanTokenBuilder);
1999 };
2000 
2001 } // namespace client
2002 } // namespace kudu
2003 #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:411
A representation of an operation's outcome.
Definition: status.h:106
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:1176
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:224
static const uint64_t kNoTimestamp
Definition: client.h:390
ReplicaSelection
Policy with which to choose amongst multiple replicas.
Definition: client.h:369
A single row upsert to be sent to the cluster.
Definition: write_op.h:151
Builds scan tokens for a table.
Definition: client.h:1899
ComparisonOp
Supported comparison operators.
Definition: scan_predicate.h:39
Alters an existing table based on the provided steps.
Definition: client.h:864
OrderMode
Definition: client.h:1518
Definition: client.h:1524
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:626
This class represents an error which occurred in a write operation.
Definition: client.h:1023
A handle for a connection to a cluster.
Definition: client.h:243
An inclusive bound.
Definition: client.h:627
In-memory representation of a remote tablet server.
Definition: client.h:454
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:759
This class is a representation of a single scan.
Definition: client.h:1481
ReadMode
The read modes for scanners.
Definition: client.h:1484
A "factory" for KuduClient objects.
Definition: client.h:150
A single-row write operation to be sent to a Kudu table.
Definition: write_op.h:55
Select the LEADER replica.
Definition: client.h:370
RangePartitionBound
Range partition bound type.
Definition: client.h:625
In-memory representation of a remote tablet.
Definition: client.h:514
In-memory representation of a remote tablet's replica.
Definition: client.h:486
FlushMode
Modes of flush operations.
Definition: client.h:1132
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:544
Representation of a Kudu client session.
Definition: client.h:1127
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