Skip to content

Commit f839524

Browse files
authored
support dump for vecf32 and vecf64 (#21281)
https://github.com/matrixorigin/MO-Cloud/issues/4765 Approved by: @qingxinhome, @heni02
1 parent fb4cc6f commit f839524

File tree

4 files changed

+61
-5
lines changed

4 files changed

+61
-5
lines changed

pkg/frontend/export.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,16 @@ func exportDataFromResultSetToCSVFile(oq *ExportConfig) error {
593593
if err != nil {
594594
return err
595595
}
596-
value = addEscapeToString(value.([]byte))
596+
if _, ok := value.([]byte); ok {
597+
value = addEscapeToString(value.([]byte))
598+
} else if arr, ok := value.([]float32); ok {
599+
// this is for T_array_float32 type
600+
value = []byte(types.ArrayToString[float32](arr))
601+
} else if arr, ok := value.([]float64); ok {
602+
// this is for T_array_float64 type
603+
value = []byte(types.ArrayToString[float64](arr))
604+
}
605+
597606
if err = formatOutputString(oq, value.([]byte), symbol[i], closeby, true, buffer); err != nil {
598607
return err
599608
}

pkg/frontend/export_test.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,26 @@ func Test_exportDataToCSVFile(t *testing.T) {
207207
mrs: &MysqlResultSet{},
208208
}
209209

210-
var col = make([]MysqlColumn, 13)
210+
var col = make([]MysqlColumn, 15)
211211
col[5].flag = 0
212212
col[6].flag = 1 << 5
213-
var colType = []defines.MysqlType{defines.MYSQL_TYPE_YEAR, defines.MYSQL_TYPE_YEAR, defines.MYSQL_TYPE_YEAR, defines.MYSQL_TYPE_SHORT, defines.MYSQL_TYPE_DOUBLE,
214-
defines.MYSQL_TYPE_LONGLONG, defines.MYSQL_TYPE_LONGLONG, defines.MYSQL_TYPE_VARCHAR, defines.MYSQL_TYPE_DATE, defines.MYSQL_TYPE_DATETIME,
215-
defines.MYSQL_TYPE_BOOL, defines.MYSQL_TYPE_DECIMAL, defines.MYSQL_TYPE_JSON}
213+
var colType = []defines.MysqlType{
214+
defines.MYSQL_TYPE_YEAR,
215+
defines.MYSQL_TYPE_YEAR,
216+
defines.MYSQL_TYPE_YEAR,
217+
defines.MYSQL_TYPE_SHORT,
218+
defines.MYSQL_TYPE_DOUBLE,
219+
defines.MYSQL_TYPE_LONGLONG,
220+
defines.MYSQL_TYPE_LONGLONG,
221+
defines.MYSQL_TYPE_VARCHAR,
222+
defines.MYSQL_TYPE_DATE,
223+
defines.MYSQL_TYPE_DATETIME,
224+
defines.MYSQL_TYPE_BOOL,
225+
defines.MYSQL_TYPE_DECIMAL,
226+
defines.MYSQL_TYPE_JSON,
227+
defines.MYSQL_TYPE_VARCHAR,
228+
defines.MYSQL_TYPE_VARCHAR,
229+
}
216230
for i := 0; i < len(col); i++ {
217231
col[i].SetColumnType(colType[i])
218232
ep.mrs.AddColumn(&col[i])
@@ -230,6 +244,8 @@ func Test_exportDataToCSVFile(t *testing.T) {
230244
data[10] = true
231245
data[11] = 1.2
232246
data[12], _ = types.ParseStringToByteJson(`{"a":1}`)
247+
data[13] = []float32{8.560689, 6.790359, 821.9778}
248+
data[13] = []float64{8.560689, 6.790359, 821.9778}
233249

234250
ep.mrs.AddRow(data)
235251

test/distributed/cases/array/array.result

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ insert into vec_table values(1, "[1,2,3]", "[4,5,6]");
1212
select * from vec_table;
1313
a b c
1414
1 [1, 2, 3] [4, 5, 6]
15+
set save_query_result = on;
16+
/* save_result */ select * from vec_table;
17+
a b c
18+
1 [1, 2, 3] [4, 5, 6]
19+
select * from result_scan(last_query_id()) as u;
20+
a b c
21+
1 [1, 2, 3] [4, 5, 6]
22+
set save_query_result = off;
1523
select b+b from vec_table;
1624
b + b
1725
[2, 4, 6]
@@ -192,6 +200,20 @@ a b c
192200
2 [0.8166459, 0.66616553, 0.4886152] null
193201
3 [0.1726299, 3.2908857, 30.433094] [0.45052445, 2.1984527, 9.579752, 123.48039, 4635.894]
194202
4 [8.560689, 6.790359, 821.9778] [0.46323407, 23.498016, 563.923, 56.076736, 8732.958]
203+
set save_query_result = on;
204+
/* save_result */ select * from t7;
205+
a b c
206+
1 null null
207+
2 [0.8166459, 0.66616553, 0.4886152] null
208+
3 [0.1726299, 3.2908857, 30.433094] [0.45052445, 2.1984527, 9.579752, 123.48039, 4635.894]
209+
4 [8.560689, 6.790359, 821.9778] [0.46323407, 23.498016, 563.923, 56.076736, 8732.958]
210+
select * from result_scan(last_query_id()) as u;
211+
a b c
212+
1 null null
213+
2 [0.8166459, 0.66616553, 0.4886152] null
214+
3 [0.1726299, 3.2908857, 30.433094] [0.45052445, 2.1984527, 9.579752, 123.48039, 4635.894]
215+
4 [8.560689, 6.790359, 821.9778] [0.46323407, 23.498016, 563.923, 56.076736, 8732.958]
216+
set save_query_result = off;
195217
select a, b + b, c + c from t7;
196218
a b + b c + c
197219
1 null null

test/distributed/cases/array/array.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ desc vec_table;
1010
insert into vec_table values(1, "[1,2,3]", "[4,5,6]");
1111
select * from vec_table;
1212

13+
set save_query_result = on;
14+
/* save_result */ select * from vec_table;
15+
select * from result_scan(last_query_id()) as u;
16+
set save_query_result = off;
17+
1318
-- binary operators
1419
select b+b from vec_table;
1520
select b-b from vec_table;
@@ -106,6 +111,10 @@ insert into t7 values(2, "[0.8166459, 0.66616553, 0.4886152]", NULL);
106111
insert into t7 values(3, "[0.1726299, 3.2908857, 30.433094]","[0.45052445, 2.1984527, 9.579752, 123.48039, 4635.894]");
107112
insert into t7 values(4, "[8.560689, 6.790359, 821.9778]", "[0.46323407, 23.498016, 563.923, 56.076736, 8732.958]");
108113
select * from t7;
114+
set save_query_result = on;
115+
/* save_result */ select * from t7;
116+
select * from result_scan(last_query_id()) as u;
117+
set save_query_result = off;
109118
select a, b + b, c + c from t7;
110119
select a, b * b, c * c from t7;
111120
select l2_norm(b), l2_norm(c) from t7;

0 commit comments

Comments
 (0)