18#ifndef KUDU_CLIENT_SCHEMA_H
19#define KUDU_CLIENT_SCHEMA_H
29#ifdef KUDU_HEADERS_NO_STUBS
30#include <gtest/gtest_prod.h>
32#include "kudu/gutil/macros.h"
33#include "kudu/gutil/port.h"
35#include "kudu/client/stubs.h"
38#include "kudu/util/kudu_export.h"
47struct ColumnSchemaDelta;
50class RemoteKsckCluster;
57class GetTableSchemaRpc;
68class KUDU_EXPORT KuduColumnTypeAttributes {
70 KuduColumnTypeAttributes();
92 ~KuduColumnTypeAttributes();
100 KuduColumnTypeAttributes&
operator=(
const KuduColumnTypeAttributes& other);
104 void CopyFrom(
const KuduColumnTypeAttributes& other);
117 friend class KuduColumnSchema;
118 friend class KuduColumnSpec;
119 friend class KuduSchema;
123 class KUDU_NO_EXPORT Data;
148 DEFAULT_COMPRESSION = 0,
170 int32_t block_size = 0)
171 ATTRIBUTE_DEPRECATED(
"this constructor will be private in a future release")
174 block_size_(block_size) {
276 ATTRIBUTE_DEPRECATED(
"use operator==(const KuduColumnSchema&) instead");
300 const std::string&
name()
const;
324 friend class KuduColumnSpec;
325 friend class KuduSchema;
326 friend class KuduSchemaBuilder;
329 friend class KuduTableAlterer;
331#ifdef KUDU_HEADERS_NO_STUBS
332 FRIEND_TEST(KuduColumnSchemaTest, TestEquals);
337#if defined(__clang__) || \
338 (defined(__GNUC__) && (__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40600)
339#pragma GCC diagnostic push
340#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
344 const std::string &
name,
348 bool is_auto_incrementing =
false,
349 const void* default_value = NULL,
352 const std::string&
comment =
"");
353#if defined(__clang__) || \
354 (defined(__GNUC__) && (__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40600)
355#pragma GCC diagnostic pop
370class KUDU_EXPORT KuduColumnSpec {
457 KuduColumnSpec*
Scale(int8_t scale);
567 KuduColumnSpec*
RenameTo(
const std::string& new_name);
575 KuduColumnSpec*
Comment(
const std::string& comment);
578 class KUDU_NO_EXPORT Data;
580 friend class KuduSchemaBuilder;
581 friend class KuduTableAlterer;
587 explicit KuduColumnSpec(
const std::string& col_name);
591 Status ToColumnSchemaDelta(ColumnSchemaDelta* col_delta)
const;
593 Slice DefaultValueAsSlice()
const;
598 DISALLOW_COPY_AND_ASSIGN(KuduColumnSpec);
622class KUDU_EXPORT KuduSchemaBuilder {
625 ~KuduSchemaBuilder();
645 KuduSchemaBuilder*
SetPrimaryKey(
const std::vector<std::string>& key_col_names);
665 const std::vector<std::string>& key_col_names);
679 class KUDU_NO_EXPORT Data;
684 DISALLOW_COPY_AND_ASSIGN(KuduSchemaBuilder);
688class KUDU_EXPORT KuduSchema {
724 Status Reset(
const std::vector<KuduColumnSchema>& columns,
int key_columns)
725 ATTRIBUTE_DEPRECATED(
"this method will be removed in a future release")
736 bool Equals(const KuduSchema& other) const
737 ATTRIBUTE_DEPRECATED(
"use operator==(const KuduSchema&) instead");
745 bool operator==(const KuduSchema& rhs) const;
753 bool operator!=(const KuduSchema& rhs) const;
819 static KuduSchema FromSchema(const Schema& schema) KUDU_NO_EXPORT;
828 static Schema ToSchema(const KuduSchema& kudu_schema) KUDU_NO_EXPORT;
833 friend class ClientTest;
834 friend class KuduClient;
835 friend class KuduScanner;
836 friend class KuduScanToken;
837 friend class KuduScanTokenBuilder;
838 friend class KuduSchemaBuilder;
839 friend class KuduTable;
840 friend class KuduTableCreator;
841 friend class KuduWriteOperation;
842 friend class ScanConfiguration;
843 friend class internal::GetTableSchemaRpc;
844 friend class internal::LookupRpc;
845 friend class internal::MetaCache;
846 friend class internal::MetaCacheEntry;
847 friend class internal::WriteRpc;
848 friend class tools::RemoteKsckCluster;
849 friend class tools::ReplicaDumper;
852 explicit KuduSchema(const Schema& schema);
853#if __cplusplus >= 201103
854 explicit KuduSchema(Schema&& schema);
859 size_t num_key_columns()
const;
A row which may only contain values for a subset of the columns.
Definition partial_row.h:72
A wrapper around externally allocated data.
Definition slice.h:51
A representation of an operation's outcome.
Definition status.h:191
Representation of the column schema.
Definition schema.h:215
const std::string & name() const
void CopyFrom(const KuduColumnSchema &other)
bool operator==(const KuduColumnSchema &rhs) const
KuduColumnTypeAttributes type_attributes() const
bool operator!=(const KuduColumnSchema &rhs) const
KuduColumnSchema & operator=(const KuduColumnSchema &other)
bool Equals(const KuduColumnSchema &other) const
DataType
Supported data types for columns.
Definition schema.h:218
@ TIMESTAMP
deprecated, use UNIXTIME_MICROS
Definition schema.h:231
static Status StringToDataType(const std::string &type_str, DataType *type)
bool is_immutable() const
const std::string & comment() const
static std::string DataTypeToString(DataType type)
KuduColumnStorageAttributes storage_attributes() const
KuduColumnSchema(const KuduColumnSchema &other)
Builder API for specifying or altering a column within a table schema.
Definition schema.h:370
KuduColumnSpec * NonUniquePrimaryKey()
KuduColumnSpec * Encoding(KuduColumnStorageAttributes::EncodingType encoding)
KuduColumnSpec * NotNull()
KuduColumnSpec * RenameTo(const std::string &new_name)
KuduColumnSpec * RemoveDefault()
KuduColumnSpec * Type(KuduColumnSchema::DataType type)
KuduColumnSpec * BlockSize(int32_t block_size)
KuduColumnSpec * Default(KuduValue *value)
KuduColumnSpec * Immutable()
KuduColumnSpec * Compression(KuduColumnStorageAttributes::CompressionType compression)
KuduColumnSpec * PrimaryKey()
KuduColumnSpec * Precision(int8_t precision)
KuduColumnSpec * Comment(const std::string &comment)
KuduColumnSpec * Nullable()
KuduColumnSpec * Scale(int8_t scale)
KuduColumnSpec * Length(uint16_t length)
KuduColumnSpec * Mutable()
Representation of column storage attributes.
Definition schema.h:130
std::string ToString() const
const CompressionType compression() const
Definition schema.h:183
static Status StringToEncodingType(const std::string &encoding, EncodingType *type)
const EncodingType encoding() const
Definition schema.h:178
KuduColumnStorageAttributes(EncodingType encoding=AUTO_ENCODING, CompressionType compression=DEFAULT_COMPRESSION, int32_t block_size=0)
Definition schema.h:167
EncodingType
Column encoding types.
Definition schema.h:133
@ GROUP_VARINT
Definition schema.h:143
static Status StringToCompressionType(const std::string &compression, CompressionType *type)
CompressionType
Column compression types.
Definition schema.h:147
Representation of column type attributes.
Definition schema.h:68
void CopyFrom(const KuduColumnTypeAttributes &other)
KuduColumnTypeAttributes(uint16_t length)
KuduColumnTypeAttributes(int8_t precision, int8_t scale)
KuduColumnTypeAttributes & operator=(const KuduColumnTypeAttributes &other)
KuduColumnTypeAttributes(const KuduColumnTypeAttributes &other)
KuduColumnSpec * AddColumn(const std::string &name)
KuduSchemaBuilder * SetPrimaryKey(const std::vector< std::string > &key_col_names)
KuduSchemaBuilder * SetNonUniquePrimaryKey(const std::vector< std::string > &key_col_names)
Status Build(KuduSchema *schema)
A representation of a table's schema.
Definition schema.h:688
int GetAutoIncrementingColumnIndex() const
void GetPrimaryKeyColumnIndexes(std::vector< int > *indexes) const
KuduSchema & operator=(const KuduSchema &other)
bool HasColumn(const std::string &col_name, KuduColumnSchema *col_schema) const
bool Equals(const KuduSchema &other) const
Status Reset(const std::vector< KuduColumnSchema > &columns, int key_columns) WARN_UNUSED_RESULT
KuduSchema(const KuduSchema &other)
KuduPartialRow * NewRow() const
void CopyFrom(const KuduSchema &other)
size_t num_columns() const
std::string ToString() const
KuduColumnSchema Column(size_t idx) const
static const char *const GetAutoIncrementingColumnName()
A constant cell value with a specific type.
Definition value.h:37