1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15- use std:: sync:: Arc ;
16-
17- use api:: v1:: codec:: SelectResult as GrpcSelectResult ;
18- use api:: v1:: column:: SemanticType ;
1915use api:: v1:: {
2016 object_expr, object_result, query_request, DatabaseRequest , ExprHeader , InsertExpr ,
2117 MutateResult as GrpcMutateResult , ObjectExpr , ObjectResult as GrpcObjectResult , QueryRequest ,
2218} ;
2319use common_error:: status_code:: StatusCode ;
2420use common_grpc:: flight:: { raw_flight_data_to_message, FlightMessage } ;
25- use common_grpc_expr:: column_to_vector;
2621use common_query:: Output ;
27- use common_recordbatch:: { RecordBatch , RecordBatches } ;
28- use datatypes:: prelude:: * ;
29- use datatypes:: schema:: { ColumnSchema , Schema } ;
3022use snafu:: { ensure, OptionExt , ResultExt } ;
3123
32- use crate :: error:: { ColumnToVectorSnafu , ConvertSchemaSnafu , DatanodeSnafu , DecodeSelectSnafu } ;
24+ use crate :: error:: DatanodeSnafu ;
3325use crate :: { error, Client , Result } ;
3426
3527pub const PROTOCOL_VERSION : u32 = 1 ;
@@ -141,7 +133,6 @@ impl Database {
141133
142134#[ derive( Debug ) ]
143135pub enum ObjectResult {
144- Select ( GrpcSelectResult ) ,
145136 FlightData ( Vec < FlightMessage > ) ,
146137 Mutate ( GrpcMutateResult ) ,
147138}
@@ -165,10 +156,6 @@ impl TryFrom<api::v1::ObjectResult> for ObjectResult {
165156 actual : 0_usize ,
166157 } ) ?;
167158 Ok ( match obj_result {
168- object_result:: Result :: Select ( select) => {
169- let result = ( * select. raw_data ) . try_into ( ) . context ( DecodeSelectSnafu ) ?;
170- ObjectResult :: Select ( result)
171- }
172159 object_result:: Result :: Mutate ( mutate) => ObjectResult :: Mutate ( mutate) ,
173160 object_result:: Result :: FlightData ( flight_data) => {
174161 let flight_messages = raw_flight_data_to_message ( flight_data. raw_data )
@@ -188,41 +175,6 @@ impl TryFrom<ObjectResult> for Output {
188175
189176 fn try_from ( value : ObjectResult ) -> Result < Self > {
190177 let output = match value {
191- ObjectResult :: Select ( select) => {
192- let vectors = select
193- . columns
194- . iter ( )
195- . map ( |column| {
196- column_to_vector ( column, select. row_count ) . context ( ColumnToVectorSnafu )
197- } )
198- . collect :: < Result < Vec < VectorRef > > > ( ) ?;
199-
200- let column_schemas = select
201- . columns
202- . iter ( )
203- . zip ( vectors. iter ( ) )
204- . map ( |( column, vector) | {
205- let datatype = vector. data_type ( ) ;
206- // nullable or not, does not affect the output
207- let mut column_schema =
208- ColumnSchema :: new ( & column. column_name , datatype, true ) ;
209- if column. semantic_type == SemanticType :: Timestamp as i32 {
210- column_schema = column_schema. with_time_index ( true ) ;
211- }
212- column_schema
213- } )
214- . collect :: < Vec < ColumnSchema > > ( ) ;
215-
216- let schema = Arc :: new ( Schema :: try_new ( column_schemas) . context ( ConvertSchemaSnafu ) ?) ;
217- let recordbatches = if vectors. is_empty ( ) {
218- RecordBatches :: try_new ( schema, vec ! [ ] )
219- } else {
220- RecordBatch :: new ( schema, vectors)
221- . and_then ( |batch| RecordBatches :: try_new ( batch. schema . clone ( ) , vec ! [ batch] ) )
222- }
223- . context ( error:: CreateRecordBatchesSnafu ) ?;
224- Output :: RecordBatches ( recordbatches)
225- }
226178 ObjectResult :: Mutate ( mutate) => {
227179 if mutate. failure != 0 {
228180 return error:: MutateFailureSnafu {
@@ -240,17 +192,19 @@ impl TryFrom<ObjectResult> for Output {
240192
241193#[ cfg( test) ]
242194mod tests {
195+ use std:: sync:: Arc ;
196+
243197 use api:: helper:: ColumnDataTypeWrapper ;
244198 use api:: v1:: Column ;
245199 use common_grpc:: select:: { null_mask, values} ;
200+ use common_grpc_expr:: column_to_vector;
201+ use datatypes:: prelude:: { Vector , VectorRef } ;
246202 use datatypes:: vectors:: {
247203 BinaryVector , BooleanVector , DateTimeVector , DateVector , Float32Vector , Float64Vector ,
248204 Int16Vector , Int32Vector , Int64Vector , Int8Vector , StringVector , UInt16Vector ,
249205 UInt32Vector , UInt64Vector , UInt8Vector ,
250206 } ;
251207
252- use super :: * ;
253-
254208 #[ test]
255209 fn test_column_to_vector ( ) {
256210 let mut column = create_test_column ( Arc :: new ( BooleanVector :: from ( vec ! [ true ] ) ) ) ;
0 commit comments