build: explicitly declare decimal Set/Get<>s
Some compilers aren't clever enough to pick up on implicit instantiation
of templates based on usage in a given compilation unit, and instead we
need to explicitly instantiate them. This surfaced as the following
build error:
Undefined symbols for architecture x86_64:
"kudu::Status kudu::KuduPartialRow::Set<kudu::TypeTraits<(kudu::DataType)15>
>(int, kudu::TypeTraits<(kudu::DataType)15>::cpp_type const&, bool)",
referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)15>
>::GenerateSplitRows(kudu::client::KuduSchema const&) const in
all_types-itest.cc.o
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)15>
>::GenerateRowKey(kudu::client::KuduInsert*, int, int) const in
all_types-itest.cc.o
"kudu::Status kudu::KuduPartialRow::Set<kudu::TypeTraits<(kudu::DataType)16>
>(int, kudu::TypeTraits<(kudu::DataType)16>::cpp_type const&, bool)",
referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)16>
>::GenerateSplitRows(kudu::client::KuduSchema const&) const in
all_types-itest.cc.o
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)16>
>::GenerateRowKey(kudu::client::KuduInsert*, int, int) const in
all_types-itest.cc.o
"kudu::Status kudu::KuduPartialRow::Set<kudu::TypeTraits<(kudu::DataType)17>
>(int, kudu::TypeTraits<(kudu::DataType)17>::cpp_type const&, bool)",
referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)17>
>::GenerateSplitRows(kudu::client::KuduSchema const&) const in
all_types-itest.cc.o
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)17>
>::GenerateRowKey(kudu::client::KuduInsert*, int, int) const in
all_types-itest.cc.o
"kudu::Status
kudu::client::KuduScanBatch::RowPtr::Get<kudu::TypeTraits<(kudu::DataType)15>
>(int, kudu::TypeTraits<(kudu::DataType)15>::cpp_type*) const", referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)15>
>::VerifyRowKey(kudu::client::KuduScanBatch::RowPtr const&, int, int) const in
all_types-itest.cc.o
"kudu::Status
kudu::client::KuduScanBatch::RowPtr::Get<kudu::TypeTraits<(kudu::DataType)16>
>(int, kudu::TypeTraits<(kudu::DataType)16>::cpp_type*) const", referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)16>
>::VerifyRowKey(kudu::client::KuduScanBatch::RowPtr const&, int, int) const in
all_types-itest.cc.o
"kudu::Status
kudu::client::KuduScanBatch::RowPtr::Get<kudu::TypeTraits<(kudu::DataType)17>
>(int, kudu::TypeTraits<(kudu::DataType)17>::cpp_type*) const", referenced from:
kudu::client::IntKeysTestSetup<kudu::client::KeyTypeWrapper<(kudu::DataType)17>
>::VerifyRowKey(kudu::client::KuduScanBatch::RowPtr const&, int, int) const in
all_types-itest.cc.o
Change-Id: If280f69b5736737a55862486c98f434cfb8e8072
Reviewed-on: http://gerrit.cloudera.org:8080/11969
Reviewed-by: Adar Dembo <[email protected]>
Reviewed-by: Alexey Serbin <[email protected]>
Tested-by: Kudu Jenkins
Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/b8595f8f
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/b8595f8f
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/b8595f8f
Branch: refs/heads/master
Commit: b8595f8fcb34e42c649b9f90dd5ddec527747d44
Parents: 27baa0c
Author: Andrew Wong <[email protected]>
Authored: Tue Nov 20 16:36:01 2018 -0800
Committer: Andrew Wong <[email protected]>
Committed: Wed Nov 21 01:21:50 2018 +0000
----------------------------------------------------------------------
src/kudu/client/scan_batch.cc | 9 +++++++++
src/kudu/common/partial_row.cc | 31 +++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kudu/blob/b8595f8f/src/kudu/client/scan_batch.cc
----------------------------------------------------------------------
diff --git a/src/kudu/client/scan_batch.cc b/src/kudu/client/scan_batch.cc
index 410d125..ac63c1f 100644
--- a/src/kudu/client/scan_batch.cc
+++ b/src/kudu/client/scan_batch.cc
@@ -311,6 +311,15 @@ Status KuduScanBatch::RowPtr::Get<TypeTraits<STRING> >(int
col_idx, Slice* val)
template
Status KuduScanBatch::RowPtr::Get<TypeTraits<BINARY> >(int col_idx, Slice*
val) const;
+template
+Status KuduScanBatch::RowPtr::Get<TypeTraits<DECIMAL32> >(int col_idx,
int32_t* val) const;
+
+template
+Status KuduScanBatch::RowPtr::Get<TypeTraits<DECIMAL64> >(int col_idx,
int64_t* val) const;
+
+template
+Status KuduScanBatch::RowPtr::Get<TypeTraits<DECIMAL128> >(int col_idx,
int128_t* val) const;
+
Status KuduScanBatch::RowPtr::GetUnscaledDecimal(int col_idx, int128_t* val)
const {
const ColumnSchema& col = schema_->column(col_idx);
const DataType col_type = col.type_info()->type();
http://git-wip-us.apache.org/repos/asf/kudu/blob/b8595f8f/src/kudu/common/partial_row.cc
----------------------------------------------------------------------
diff --git a/src/kudu/common/partial_row.cc b/src/kudu/common/partial_row.cc
index de7d52a..b20ce33 100644
--- a/src/kudu/common/partial_row.cc
+++ b/src/kudu/common/partial_row.cc
@@ -499,6 +499,22 @@ Status KuduPartialRow::Set<TypeTraits<BOOL> >(int col_idx,
bool owned);
template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL32> >(int col_idx,
+ const
TypeTraits<DECIMAL32>::cpp_type& val,
+ bool owned);
+
+template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL64> >(int col_idx,
+ const
TypeTraits<DECIMAL64>::cpp_type& val,
+ bool owned);
+
+template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL128> >(int col_idx,
+ const
TypeTraits<DECIMAL128>::cpp_type& val,
+ bool owned);
+
+
+template
Status KuduPartialRow::Set<TypeTraits<INT8> >(const Slice& col_name,
const
TypeTraits<INT8>::cpp_type& val,
bool owned);
@@ -554,6 +570,21 @@ Status KuduPartialRow::Set<TypeTraits<BINARY> >(const
Slice& col_name,
const
TypeTraits<BINARY>::cpp_type& val,
bool owned);
+template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL32> >(const Slice& col_name,
+ const
TypeTraits<DECIMAL32>::cpp_type& val,
+ bool owned);
+
+template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL64> >(const Slice& col_name,
+ const
TypeTraits<DECIMAL64>::cpp_type& val,
+ bool owned);
+
+template
+Status KuduPartialRow::Set<TypeTraits<DECIMAL128> >(const Slice& col_name,
+ const
TypeTraits<DECIMAL128>::cpp_type& val,
+ bool owned);
+
//------------------------------------------------------------
// Getters
//------------------------------------------------------------