17 #ifndef KUDU_COMMON_PARTIAL_ROW_H
18 #define KUDU_COMMON_PARTIAL_ROW_H
26 #ifdef KUDU_HEADERS_NO_STUBS
27 #include <gtest/gtest_prod.h>
29 #include "kudu/gutil/port.h"
33 #include "kudu/client/stubs.h"
36 #include "kudu/util/int128.h"
37 #include "kudu/util/kudu_export.h"
38 #include "kudu/util/slice.h"
45 class ClientTest_TestProjectionPredicatesFuzz_Test;
46 class KuduWriteOperation;
50 template<
typename KeyTypeWrapper>
struct SliceKeysTestSetup;
51 template<
typename KeyTypeWrapper>
struct IntKeysTestSetup;
55 template<
typename KeyTypeWrapper>
struct SliceTypeRowOps;
56 template<
typename KeyTypeWrapper>
struct NumTypeRowOps;
104 Status
SetBool(
const Slice& col_name,
bool val) WARN_UNUSED_RESULT;
105 Status
SetInt8(
const Slice& col_name, int8_t val) WARN_UNUSED_RESULT;
106 Status
SetInt16(
const Slice& col_name, int16_t val) WARN_UNUSED_RESULT;
107 Status
SetInt32(
const Slice& col_name, int32_t val) WARN_UNUSED_RESULT;
108 Status
SetInt64(
const Slice& col_name, int64_t val) WARN_UNUSED_RESULT;
117 int64_t micros_since_utc_epoch) WARN_UNUSED_RESULT;
125 Status
SetDate(
const Slice& col_name, int32_t days_since_unix_epoch) WARN_UNUSED_RESULT;
126 Status
SetFloat(
const Slice& col_name,
float val) WARN_UNUSED_RESULT;
127 Status
SetDouble(
const Slice& col_name,
double val) WARN_UNUSED_RESULT;
128 #if KUDU_INT128_SUPPORTED
129 Status SetUnscaledDecimal(
const Slice& col_name, int128_t val) WARN_UNUSED_RESULT;
146 Status
SetBool(
int col_idx,
bool val) WARN_UNUSED_RESULT;
148 Status
SetInt8(
int col_idx, int8_t val) WARN_UNUSED_RESULT;
149 Status
SetInt16(
int col_idx, int16_t val) WARN_UNUSED_RESULT;
150 Status
SetInt32(
int col_idx, int32_t val) WARN_UNUSED_RESULT;
151 Status
SetInt64(
int col_idx, int64_t val) WARN_UNUSED_RESULT;
165 Status
SetDate(
int col_idx, int32_t days_since_unix_epoch) WARN_UNUSED_RESULT;
167 Status
SetFloat(
int col_idx,
float val) WARN_UNUSED_RESULT;
168 Status
SetDouble(
int col_idx,
double val) WARN_UNUSED_RESULT;
169 #if KUDU_INT128_SUPPORTED
170 Status SetUnscaledDecimal(
int col_idx, int128_t val) WARN_UNUSED_RESULT;
190 Status
SetBinary(
const Slice& col_name,
const Slice& val) WARN_UNUSED_RESULT;
191 Status
SetString(
const Slice& col_name,
const Slice& val) WARN_UNUSED_RESULT;
203 Status
SetVarchar(
const Slice& col_name,
const Slice& val) WARN_UNUSED_RESULT;
226 Status
SetBinary(
int col_idx,
const Slice& val) WARN_UNUSED_RESULT;
227 Status
SetString(
int col_idx,
const Slice& val) WARN_UNUSED_RESULT;
243 Status
SetVarchar(
int col_idx,
const Slice& val) WARN_UNUSED_RESULT;
256 Status
SetBinaryCopy(
const Slice& col_name,
const Slice& val) WARN_UNUSED_RESULT;
257 Status
SetStringCopy(
const Slice& col_name,
const Slice& val) WARN_UNUSED_RESULT;
385 Status
SetNull(
const Slice& col_name) WARN_UNUSED_RESULT;
395 Status
SetNull(
int col_idx) WARN_UNUSED_RESULT;
404 Status
Unset(
const Slice& col_name) WARN_UNUSED_RESULT;
413 Status
Unset(
int col_idx) WARN_UNUSED_RESULT;
434 bool IsNull(
const Slice& col_name)
const;
457 Status
GetBool(
const Slice& col_name,
bool* val)
const WARN_UNUSED_RESULT;
459 Status
GetInt8(
const Slice& col_name, int8_t* val)
const WARN_UNUSED_RESULT;
460 Status
GetInt16(
const Slice& col_name, int16_t* val)
const WARN_UNUSED_RESULT;
461 Status
GetInt32(
const Slice& col_name, int32_t* val)
const WARN_UNUSED_RESULT;
462 Status
GetInt64(
const Slice& col_name, int64_t* val)
const WARN_UNUSED_RESULT;
474 int64_t* micros_since_utc_epoch)
const WARN_UNUSED_RESULT;
485 Status
GetDate(
const Slice& col_name, int32_t* days_since_unix_epoch)
const WARN_UNUSED_RESULT;
486 Status
GetFloat(
const Slice& col_name,
float* val)
const WARN_UNUSED_RESULT;
487 Status
GetDouble(
const Slice& col_name,
double* val)
const WARN_UNUSED_RESULT;
488 #if KUDU_INT128_SUPPORTED
490 Status GetUnscaledDecimal(
const Slice& col_name, int128_t* val) WARN_UNUSED_RESULT;
491 Status GetUnscaledDecimal(
const Slice& col_name, int128_t* val)
const WARN_UNUSED_RESULT;
514 Status
GetBool(
int col_idx,
bool* val)
const WARN_UNUSED_RESULT;
515 Status
GetInt8(
int col_idx, int8_t* val)
const WARN_UNUSED_RESULT;
516 Status
GetInt16(
int col_idx, int16_t* val)
const WARN_UNUSED_RESULT;
517 Status
GetInt32(
int col_idx, int32_t* val)
const WARN_UNUSED_RESULT;
518 Status
GetInt64(
int col_idx, int64_t* val)
const WARN_UNUSED_RESULT;
529 Status
GetUnixTimeMicros(
int col_idx, int64_t* micros_since_utc_epoch)
const WARN_UNUSED_RESULT;
540 Status
GetDate(
int col_idx, int32_t* days_since_unix_epoch)
const WARN_UNUSED_RESULT;
541 Status
GetFloat(
int col_idx,
float* val)
const WARN_UNUSED_RESULT;
542 Status
GetDouble(
int col_idx,
double* val)
const WARN_UNUSED_RESULT;
543 #if KUDU_INT128_SUPPORTED
545 Status GetUnscaledDecimal(
int col_idx, int128_t* val) WARN_UNUSED_RESULT;
546 Status GetUnscaledDecimal(
int col_idx, int128_t* val)
const WARN_UNUSED_RESULT;
566 Status
GetString(
const Slice& col_name, Slice* val)
const WARN_UNUSED_RESULT;
567 Status
GetBinary(
const Slice& col_name, Slice* val)
const WARN_UNUSED_RESULT;
568 Status
GetVarchar(
const Slice& col_name, Slice* val)
const WARN_UNUSED_RESULT;
591 Status
GetString(
int col_idx, Slice* val)
const WARN_UNUSED_RESULT;
592 Status
GetBinary(
int col_idx, Slice* val)
const WARN_UNUSED_RESULT;
593 Status
GetVarchar(
int col_idx, Slice* val)
const WARN_UNUSED_RESULT;
640 const Schema*
schema()
const {
return schema_; }
643 friend class client::KuduWriteOperation;
644 friend class client::internal::WriteRpc;
645 friend class KeyUtilTest;
646 friend class PartitionSchema;
647 friend class RowOperationsPBDecoder;
648 friend class RowOperationsPBEncoder;
649 friend class tools::TableScanner;
650 friend class TestScanSpec;
651 template<
typename KeyTypeWrapper>
friend struct client::SliceKeysTestSetup;
652 template<
typename KeyTypeWrapper>
friend struct client::IntKeysTestSetup;
653 template<
typename KeyTypeWrapper>
friend struct tablet::SliceTypeRowOps;
654 template<
typename KeyTypeWrapper>
friend struct tablet::NumTypeRowOps;
655 FRIEND_TEST(client::ClientTest, TestProjectionPredicatesFuzz);
656 FRIEND_TEST(KeyUtilTest, TestIncrementInt128PrimaryKey);
657 FRIEND_TEST(PartitionPrunerTest, TestIntPartialPrimaryKeyRangePruning);
658 FRIEND_TEST(PartitionPrunerTest, TestPartialPrimaryKeyRangePruning);
659 FRIEND_TEST(PartitionPrunerTest, TestPrimaryKeyRangePruning);
660 FRIEND_TEST(RowOperationsTest, ProjectionTestWholeSchemaSpecified);
661 FRIEND_TEST(RowOperationsTest, TestProjectUpdates);
662 FRIEND_TEST(RowOperationsTest, TestProjectDeletes);
665 Status Set(
const Slice& col_name,
const typename T::cpp_type& val,
669 Status Set(
int col_idx,
const typename T::cpp_type& val,
673 Status Set(int32_t column_idx,
const uint8_t* val);
676 Status Get(
const Slice& col_name,
typename T::cpp_type* val)
const;
679 Status Get(
int col_idx,
typename T::cpp_type* val)
const;
682 Status SetSliceCopy(
const Slice& col_name,
const Slice& val);
685 Status SetSliceCopy(
int col_idx,
const Slice& val);
691 void DeallocateStringIfSet(
int col_idx,
const ColumnSchema& col);
694 void DeallocateOwnedStrings();
696 const Schema* schema_;
701 uint8_t* isset_bitmap_;
706 uint8_t* owned_strings_bitmap_;
Status SetNull(int col_idx) WARN_UNUSED_RESULT
Status SetUnixTimeMicros(const Slice &col_name, int64_t micros_since_utc_epoch) WARN_UNUSED_RESULT
Status SetStringNoCopy(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status GetInt64(const Slice &col_name, int64_t *val) const WARN_UNUSED_RESULT
Status SetInt8(int col_idx, int8_t val) WARN_UNUSED_RESULT
Status GetString(const Slice &col_name, Slice *val) const WARN_UNUSED_RESULT
Status SetBinaryNoCopy(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status Unset(const Slice &col_name) WARN_UNUSED_RESULT
Status GetVarchar(const Slice &col_name, Slice *val) const WARN_UNUSED_RESULT
Status GetFloat(int col_idx, float *val) const WARN_UNUSED_RESULT
Status SetInt32(int col_idx, int32_t val) WARN_UNUSED_RESULT
Status SetFloat(const Slice &col_name, float val) WARN_UNUSED_RESULT
Status SetVarchar(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status GetInt16(const Slice &col_name, int16_t *val) const WARN_UNUSED_RESULT
std::string ToString() const
Status SetDate(const Slice &col_name, int32_t days_since_unix_epoch) WARN_UNUSED_RESULT
Status SetBinaryCopy(int col_idx, const Slice &val) WARN_UNUSED_RESULT
Status GetDouble(const Slice &col_name, double *val) const WARN_UNUSED_RESULT
Status GetBool(int col_idx, bool *val) const WARN_UNUSED_RESULT
bool IsColumnSet(int col_idx) const
Status SetInt16(int col_idx, int16_t val) WARN_UNUSED_RESULT
Status SetInt8(const Slice &col_name, int8_t val) WARN_UNUSED_RESULT
Status SetInt32(const Slice &col_name, int32_t val) WARN_UNUSED_RESULT
Status SetVarcharNoCopyUnsafe(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
KuduPartialRow(const KuduPartialRow &other)
A row which may only contain values for a subset of the columns.
Definition: partial_row.h:72
Status GetInt16(int col_idx, int16_t *val) const WARN_UNUSED_RESULT
Status Unset(int col_idx) WARN_UNUSED_RESULT
Status SetBinaryCopy(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status SetDate(int col_idx, int32_t days_since_unix_epoch) WARN_UNUSED_RESULT
Status SetBool(const Slice &col_name, bool val) WARN_UNUSED_RESULT
Status SetDouble(int col_idx, double val) WARN_UNUSED_RESULT
Status GetFloat(const Slice &col_name, float *val) const WARN_UNUSED_RESULT
Status GetDate(int col_idx, int32_t *days_since_unix_epoch) const WARN_UNUSED_RESULT
Status GetInt64(int col_idx, int64_t *val) const WARN_UNUSED_RESULT
const Schema * schema() const
Definition: partial_row.h:640
Status SetStringNoCopy(int col_idx, const Slice &val) WARN_UNUSED_RESULT
Status SetFloat(int col_idx, float val) WARN_UNUSED_RESULT
Status GetVarchar(int col_idx, Slice *val) const WARN_UNUSED_RESULT
Status SetBinary(int col_idx, const Slice &val) WARN_UNUSED_RESULT
Status GetBinary(int col_idx, Slice *val) const WARN_UNUSED_RESULT
Status GetUnixTimeMicros(int col_idx, int64_t *micros_since_utc_epoch) const WARN_UNUSED_RESULT
Status SetBinaryNoCopy(int col_idx, const Slice &val) WARN_UNUSED_RESULT
Status SetBinary(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status GetBinary(const Slice &col_name, Slice *val) const WARN_UNUSED_RESULT
Status SetStringCopy(int col_idx, const Slice &val) WARN_UNUSED_RESULT
bool IsNull(int col_idx) const
Status SetVarcharNoCopyUnsafe(int col_idx, const Slice &val) WARN_UNUSED_RESULT
Status SetBool(int col_idx, bool val) WARN_UNUSED_RESULT
Status GetBool(const Slice &col_name, bool *val) const WARN_UNUSED_RESULT
KuduPartialRow & operator=(KuduPartialRow other)
Status SetStringCopy(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status GetInt32(const Slice &col_name, int32_t *val) const WARN_UNUSED_RESULT
Status GetDouble(int col_idx, double *val) const WARN_UNUSED_RESULT
Status GetDate(const Slice &col_name, int32_t *days_since_unix_epoch) const WARN_UNUSED_RESULT
Status GetUnixTimeMicros(const Slice &col_name, int64_t *micros_since_utc_epoch) const WARN_UNUSED_RESULT
Status GetString(int col_idx, Slice *val) const WARN_UNUSED_RESULT
Status GetInt8(int col_idx, int8_t *val) const WARN_UNUSED_RESULT
Status SetInt64(int col_idx, int64_t val) WARN_UNUSED_RESULT
Status SetInt16(const Slice &col_name, int16_t val) WARN_UNUSED_RESULT
Status EncodeRowKey(std::string *encoded_key) const
std::string ToEncodedRowKeyOrDie() const
KuduPartialRow(const Schema *schema)
Status SetDouble(const Slice &col_name, double val) WARN_UNUSED_RESULT
Status SetString(const Slice &col_name, const Slice &val) WARN_UNUSED_RESULT
Status SetString(int col_idx, const Slice &val) WARN_UNUSED_RESULT
bool IsNull(const Slice &col_name) const
Status GetInt8(const Slice &col_name, int8_t *val) const WARN_UNUSED_RESULT
Status SetInt64(const Slice &col_name, int64_t val) WARN_UNUSED_RESULT
Status GetInt32(int col_idx, int32_t *val) const WARN_UNUSED_RESULT
Status SetVarchar(int col_idx, const Slice &val) WARN_UNUSED_RESULT
bool AllColumnsSet() const
Status SetUnixTimeMicros(int col_idx, int64_t micros_since_utc_epoch) WARN_UNUSED_RESULT
bool IsColumnSet(const Slice &col_name) const
Status SetNull(const Slice &col_name) WARN_UNUSED_RESULT