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
 //------------------------------------------------------------

Reply via email to