blob: 4f0f9731d16b700b0b6f2117e8138ee379d7eb0d [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
#include "gen-cpp/ImpalaHiveServer2Service.h"
#include "gen-cpp/Frontend_types.h"
namespace impala {
class RowBatch;
class ScalarExprEvaluator;
/// Utility methods for converting from Impala (either an Expr result or a TColumnValue)
/// to Hive types (either a thrift::TColumnValue (V1->V5) or a TColumn (V6->).
/// For V6->
void TColumnValueToHS2TColumn(const TColumnValue& col_val, const TColumnType& type,
uint32_t row_idx, apache::hive::service::cli::thrift::TColumn* column);
/// Evaluate 'expr_eval' over the row [start_idx, start_idx + num_rows) from 'batch' into
/// 'column' with 'type' starting at output_row_idx. The caller is responsible for
/// calling RuntimeState::GetQueryStatus() to check for expression evaluation errors.
/// For V6->
void ExprValuesToHS2TColumn(ScalarExprEvaluator* expr_eval, const TColumnType& type,
RowBatch* batch, int start_idx, int num_rows, uint32_t output_row_idx,
apache::hive::service::cli::thrift::TColumn* column);
/// For V1->V5
void TColumnValueToHS2TColumnValue(const TColumnValue& col_val, const TColumnType& type,
apache::hive::service::cli::thrift::TColumnValue* hs2_col_val);
/// For V1->V5
void ExprValueToHS2TColumnValue(const void* value, const TColumnType& type,
apache::hive::service::cli::thrift::TColumnValue* hs2_col_val);
/// Combine two null columns by appending 'from' to 'to', starting at 'num_rows_before' in
/// 'from', 'start_idx' in 'to', and proceeding for 'num_rows_added' rows.
void StitchNulls(uint32_t num_rows_before, uint32_t num_rows_added, uint32_t start_idx,
const std::string& from, std::string* to);
void PrintTColumnValue(const apache::hive::service::cli::thrift::TColumnValue& colval,
std::stringstream* out);
}