@@ -68,8 +68,35 @@ CREATE TABLE test (c1 BIGINT,c2 BIGINT) as values
68
68
(0,null), (1,1), (null,1), (3,2), (3,2)
69
69
70
70
statement ok
71
- CREATE TABLE group_median_table (
72
- col_group STRING,
71
+ CREATE TABLE group_median_table_non_nullable (
72
+ col_group STRING NOT NULL,
73
+ col_i8 TINYINT NOT NULL,
74
+ col_i16 SMALLINT NOT NULL,
75
+ col_i32 INT NOT NULL,
76
+ col_i64 BIGINT NOT NULL,
77
+ col_u8 TINYINT UNSIGNED NOT NULL,
78
+ col_u16 SMALLINT UNSIGNED NOT NULL,
79
+ col_u32 INT UNSIGNED NOT NULL,
80
+ col_u64 BIGINT UNSIGNED NOT NULL,
81
+ col_f32 FLOAT NOT NULL,
82
+ col_f64 DOUBLE NOT NULL,
83
+ col_f64_nan DOUBLE NOT NULL,
84
+ col_decimal128 DECIMAL(10, 4) NOT NULL,
85
+ col_decimal256 NUMERIC(10, 4) NOT NULL
86
+ ) as VALUES
87
+ ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1, 0.0001, 0.0001 ),
88
+ ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, 1.1, 0.0002, 0.0002 ),
89
+ ( 'group0', 100, 100, 100, arrow_cast(100,'Int64'), 100, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64'), 0.0003, 0.0003 ),
90
+ ( 'group0', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64'), 0.0004, 0.0004 ),
91
+ ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1, 0.0001, 0.0001 ),
92
+ ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, arrow_cast('NAN','Float64'), 0.0002, 0.0002 ),
93
+ ( 'group1', 100, 100, 100, arrow_cast(100,'Int64'), 101, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64'), 0.0003, 0.0003 ),
94
+ ( 'group1', 125, 32766, 2147483646, arrow_cast(9223372036854775806,'Int64'), 100, 101, 4294967294, arrow_cast(100,'UInt64'), 3.2, 5.5, arrow_cast('NAN','Float64'), 0.0004, 0.0004 ),
95
+ ( 'group1', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64'), 0.0005, 0.0005 )
96
+
97
+ statement ok
98
+ CREATE TABLE group_median_table_nullable (
99
+ col_group STRING NOT NULL,
73
100
col_i8 TINYINT,
74
101
col_i16 SMALLINT,
75
102
col_i32 INT,
@@ -80,17 +107,21 @@ CREATE TABLE group_median_table (
80
107
col_u64 BIGINT UNSIGNED,
81
108
col_f32 FLOAT,
82
109
col_f64 DOUBLE,
83
- col_f64_nan DOUBLE
110
+ col_f64_nan DOUBLE,
111
+ col_decimal128 DECIMAL(10, 4),
112
+ col_decimal256 NUMERIC(10, 4)
84
113
) as VALUES
85
- ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1 ),
86
- ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, 1.1 ),
87
- ( 'group0', 100, 100, 100, arrow_cast(100,'Int64'), 100, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64') ),
88
- ( 'group0', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64') ),
89
- ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1 ),
90
- ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, arrow_cast('NAN','Float64') ),
91
- ( 'group1', 100, 100, 100, arrow_cast(100,'Int64'), 101, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64') ),
92
- ( 'group1', 125, 32766, 2147483646, arrow_cast(9223372036854775806,'Int64'), 100, 101, 4294967294, arrow_cast(100,'UInt64'), 3.2, 5.5, arrow_cast('NAN','Float64') ),
93
- ( 'group1', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64') )
114
+ ( 'group0', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ),
115
+ ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1, 0.0001, 0.0001 ),
116
+ ( 'group0', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, 1.1, 0.0002, 0.0002 ),
117
+ ( 'group0', 100, 100, 100, arrow_cast(100,'Int64'), 100, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64'), 0.0003, 0.0003 ),
118
+ ( 'group0', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64'), 0.0004, 0.0004 ),
119
+ ( 'group1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ),
120
+ ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 1.1, 1.1, 1.1, 0.0001, 0.0001 ),
121
+ ( 'group1', -128, -32768, -2147483648, arrow_cast(-9223372036854775808,'Int64'), 0, 0, 0, arrow_cast(0,'UInt64'), 4.4, 4.4, arrow_cast('NAN','Float64'), 0.0002, 0.0002 ),
122
+ ( 'group1', 100, 100, 100, arrow_cast(100,'Int64'), 101, 100, 100, arrow_cast(100,'UInt64'), 3.3, 3.3, arrow_cast('NAN','Float64'), 0.0003, 0.0003 ),
123
+ ( 'group1', 125, 32766, 2147483646, arrow_cast(9223372036854775806,'Int64'), 100, 101, 4294967294, arrow_cast(100,'UInt64'), 3.2, 5.5, arrow_cast('NAN','Float64'), 0.0004, 0.0004 ),
124
+ ( 'group1', 127, 32767, 2147483647, arrow_cast(9223372036854775807,'Int64'), 255, 65535, 4294967295, 18446744073709551615, 2.2, 2.2, arrow_cast('NAN','Float64'), 0.0005, 0.0005 )
94
125
95
126
#######
96
127
# Error tests
@@ -6233,79 +6264,203 @@ physical_plan
6233
6264
# Group median test
6234
6265
#######
6235
6266
6236
- # group median i8
6267
+ # group median i8 non-nullable
6237
6268
query TI rowsort
6238
- SELECT col_group, median(col_i8) FROM group_median_table GROUP BY col_group
6269
+ SELECT col_group, median(col_i8) FROM group_median_table_non_nullable GROUP BY col_group
6239
6270
----
6240
6271
group0 -14
6241
6272
group1 100
6242
6273
6243
- # group median i16
6274
+ # group median i16 non-nullable
6244
6275
query TI
6245
- SELECT col_group, median(col_i16) FROM group_median_table GROUP BY col_group
6276
+ SELECT col_group, median(col_i16) FROM group_median_table_non_nullable GROUP BY col_group
6246
6277
----
6247
6278
group0 -16334
6248
6279
group1 100
6249
6280
6250
- # group median i32
6281
+ # group median i32 non-nullable
6251
6282
query TI
6252
- SELECT col_group, median(col_i32) FROM group_median_table GROUP BY col_group
6283
+ SELECT col_group, median(col_i32) FROM group_median_table_non_nullable GROUP BY col_group
6253
6284
----
6254
6285
group0 -1073741774
6255
6286
group1 100
6256
6287
6257
- # group median i64
6288
+ # group median i64 non-nullable
6258
6289
query TI
6259
- SELECT col_group, median(col_i64) FROM group_median_table GROUP BY col_group
6290
+ SELECT col_group, median(col_i64) FROM group_median_table_non_nullable GROUP BY col_group
6260
6291
----
6261
6292
group0 -4611686018427387854
6262
6293
group1 100
6263
6294
6264
- # group median u8
6295
+ # group median u8 non-nullable
6265
6296
query TI rowsort
6266
- SELECT col_group, median(col_u8) FROM group_median_table GROUP BY col_group
6297
+ SELECT col_group, median(col_u8) FROM group_median_table_non_nullable GROUP BY col_group
6267
6298
----
6268
6299
group0 50
6269
6300
group1 100
6270
6301
6271
- # group median u16
6302
+ # group median u16 non-nullable
6272
6303
query TI
6273
- SELECT col_group, median(col_u16) FROM group_median_table GROUP BY col_group
6304
+ SELECT col_group, median(col_u16) FROM group_median_table_non_nullable GROUP BY col_group
6274
6305
----
6275
6306
group0 50
6276
6307
group1 100
6277
6308
6278
- # group median u32
6309
+ # group median u32 non-nullable
6279
6310
query TI
6280
- SELECT col_group, median(col_u32) FROM group_median_table GROUP BY col_group
6311
+ SELECT col_group, median(col_u32) FROM group_median_table_non_nullable GROUP BY col_group
6281
6312
----
6282
6313
group0 50
6283
6314
group1 100
6284
6315
6285
- # group median u64
6316
+ # group median u64 non-nullable
6286
6317
query TI
6287
- SELECT col_group, median(col_u64) FROM group_median_table GROUP BY col_group
6318
+ SELECT col_group, median(col_u64) FROM group_median_table_non_nullable GROUP BY col_group
6288
6319
----
6289
6320
group0 50
6290
6321
group1 100
6291
6322
6292
- # group median f32
6323
+ # group median f32 non-nullable
6293
6324
query TR
6294
- SELECT col_group, median(col_f32) FROM group_median_table GROUP BY col_group
6325
+ SELECT col_group, median(col_f32) FROM group_median_table_non_nullable GROUP BY col_group
6295
6326
----
6296
6327
group0 2.75
6297
6328
group1 3.2
6298
6329
6299
- # group median f64
6330
+ # group median f64 non-nullable
6300
6331
query TR
6301
- SELECT col_group, median(col_f64) FROM group_median_table GROUP BY col_group
6332
+ SELECT col_group, median(col_f64) FROM group_median_table_non_nullable GROUP BY col_group
6302
6333
----
6303
6334
group0 2.75
6304
6335
group1 3.3
6305
6336
6306
- # group median f64_nan
6337
+ # group median f64_nan non-nullable
6338
+ query TR
6339
+ SELECT col_group, median(col_f64_nan) FROM group_median_table_non_nullable GROUP BY col_group
6340
+ ----
6341
+ group0 NaN
6342
+ group1 NaN
6343
+
6344
+ # group median decimal128 non-nullable
6345
+ query TR
6346
+ SELECT col_group, median(col_decimal128) FROM group_median_table_non_nullable GROUP BY col_group
6347
+ ----
6348
+ group0 0.0002
6349
+ group1 0.0003
6350
+
6351
+ # group median decimal256 non-nullable
6307
6352
query TR
6308
- SELECT col_group, median(col_f64_nan) FROM group_median_table GROUP BY col_group
6353
+ SELECT col_group, median(col_decimal256) FROM group_median_table_non_nullable GROUP BY col_group
6354
+ ----
6355
+ group0 0.0002
6356
+ group1 0.0003
6357
+
6358
+ # group median i8 nullable
6359
+ query TI rowsort
6360
+ SELECT col_group, median(col_i8) FROM group_median_table_nullable GROUP BY col_group
6361
+ ----
6362
+ group0 -14
6363
+ group1 100
6364
+
6365
+ # group median i16 nullable
6366
+ query TI rowsort
6367
+ SELECT col_group, median(col_i16) FROM group_median_table_nullable GROUP BY col_group
6368
+ ----
6369
+ group0 -16334
6370
+ group1 100
6371
+
6372
+ # group median i32 nullable
6373
+ query TI rowsort
6374
+ SELECT col_group, median(col_i32) FROM group_median_table_nullable GROUP BY col_group
6375
+ ----
6376
+ group0 -1073741774
6377
+ group1 100
6378
+
6379
+ # group median i64 nullable
6380
+ query TI rowsort
6381
+ SELECT col_group, median(col_i64) FROM group_median_table_nullable GROUP BY col_group
6382
+ ----
6383
+ group0 -4611686018427387854
6384
+ group1 100
6385
+
6386
+ # group median u8 nullable
6387
+ query TI rowsort
6388
+ SELECT col_group, median(col_u8) FROM group_median_table_nullable GROUP BY col_group
6389
+ ----
6390
+ group0 50
6391
+ group1 100
6392
+
6393
+ # group median u16 nullable
6394
+ query TI rowsort
6395
+ SELECT col_group, median(col_u16) FROM group_median_table_nullable GROUP BY col_group
6396
+ ----
6397
+ group0 50
6398
+ group1 100
6399
+
6400
+ # group median u32 nullable
6401
+ query TI rowsort
6402
+ SELECT col_group, median(col_u32) FROM group_median_table_nullable GROUP BY col_group
6403
+ ----
6404
+ group0 50
6405
+ group1 100
6406
+
6407
+ # group median u64 nullable
6408
+ query TI rowsort
6409
+ SELECT col_group, median(col_u64) FROM group_median_table_nullable GROUP BY col_group
6410
+ ----
6411
+ group0 50
6412
+ group1 100
6413
+
6414
+ # group median f32 nullable
6415
+ query TR rowsort
6416
+ SELECT col_group, median(col_f32) FROM group_median_table_nullable GROUP BY col_group
6417
+ ----
6418
+ group0 2.75
6419
+ group1 3.2
6420
+
6421
+ # group median f64 nullable
6422
+ query TR rowsort
6423
+ SELECT col_group, median(col_f64) FROM group_median_table_nullable GROUP BY col_group
6424
+ ----
6425
+ group0 2.75
6426
+ group1 3.3
6427
+
6428
+ # group median f64_nan nullable
6429
+ query TR rowsort
6430
+ SELECT col_group, median(col_f64_nan) FROM group_median_table_nullable GROUP BY col_group
6309
6431
----
6310
6432
group0 NaN
6311
6433
group1 NaN
6434
+
6435
+ # group median decimal128 nullable
6436
+ query TR rowsort
6437
+ SELECT col_group, median(col_decimal128) FROM group_median_table_nullable GROUP BY col_group
6438
+ ----
6439
+ group0 0.0002
6440
+ group1 0.0003
6441
+
6442
+ # group median decimal256 nullable
6443
+ query TR rowsort
6444
+ SELECT col_group, median(col_decimal256) FROM group_median_table_nullable GROUP BY col_group
6445
+ ----
6446
+ group0 0.0002
6447
+ group1 0.0003
6448
+
6449
+ # median with all nulls
6450
+ statement ok
6451
+ create table group_median_all_nulls(
6452
+ a STRING NOT NULL,
6453
+ b INT
6454
+ ) AS VALUES
6455
+ ( 'group0', NULL),
6456
+ ( 'group0', NULL),
6457
+ ( 'group0', NULL),
6458
+ ( 'group1', NULL),
6459
+ ( 'group1', NULL),
6460
+ ( 'group1', NULL)
6461
+
6462
+ query TIT rowsort
6463
+ SELECT a, median(b), arrow_typeof(median(b)) FROM group_median_all_nulls GROUP BY a
6464
+ ----
6465
+ group0 NULL Int32
6466
+ group1 NULL Int32
0 commit comments