@@ -37,7 +37,12 @@ def new(*args)
3737 super ( schema , n_rows , values )
3838 when 2
3939 schema , data = args
40- RecordBatchBuilder . build ( schema , data )
40+ schema = Schema . new ( schema ) unless schema . is_a? ( Schema )
41+ if !data . empty? and data . all? { |array | array . is_a? ( Arrow ::Array ) }
42+ super ( schema , data [ 0 ] . size , data )
43+ else
44+ RecordBatchBuilder . build ( schema , data )
45+ end
4146 when 3
4247 super
4348 else
@@ -63,63 +68,6 @@ def to_table
6368 table
6469 end
6570
66- def merge ( other )
67- added_columns = { }
68- removed_columns = { }
69-
70- case other
71- when Hash
72- other . each do |name , value |
73- name = name . to_s
74- if value
75- added_columns [ name ] = ensure_raw_column ( name , value )
76- else
77- removed_columns [ name ] = true
78- end
79- end
80- when RecordBatch
81- other . columns . each do |column |
82- name = column . name
83- added_columns [ name ] = ensure_raw_column ( name , column )
84- end
85- else
86- message = "merge target must be Hash or Arrow::RecordBatch: " +
87- "<#{ other . inspect } >: #{ inspect } "
88- raise ArgumentError , message
89- end
90-
91- new_columns = [ ]
92- columns . each do |column |
93- column_name = column . name
94- new_column = added_columns . delete ( column_name )
95- if new_column
96- new_columns << new_column
97- next
98- end
99- next if removed_columns . key? ( column_name )
100- new_columns << ensure_raw_column ( column_name , column )
101- end
102-
103- added_columns . each_value do |new_column |
104- new_columns << new_column
105- end
106-
107- new_fields = [ ]
108- new_arrays = [ ]
109- new_columns . each do |new_column |
110- new_fields << new_column [ :field ]
111- new_arrays << new_column [ :data ]
112- end
113-
114- record_batch = self . class . new (
115- Schema . new ( new_fields ) ,
116- n_rows ,
117- new_arrays ,
118- )
119- share_input ( record_batch )
120- record_batch
121- end
122-
12371 def respond_to_missing? ( name , include_private )
12472 return true if find_column ( name )
12573 super
0 commit comments