From 92ee1a07a697e294eb67643f3cedf5e1efbb07ca Mon Sep 17 00:00:00 2001 From: daidai <2017501503@qq.com> Date: Fri, 26 Jul 2024 13:47:07 +0800 Subject: [PATCH] appent test. --- .../scripts/create_preinstalled_table.hql | 13 ++ .../test_hive_struct_add_column_orc/000000_0 | Bin 0 -> 578 bytes .../000000_0_copy_1 | Bin 0 -> 778 bytes .../000000_0_copy_2 | Bin 0 -> 940 bytes .../000000_0_copy_3 | Bin 0 -> 996 bytes .../000000_0_copy_4 | Bin 0 -> 1127 bytes .../000000_0_copy_5 | Bin 0 -> 1355 bytes .../hive/test_hive_struct_add_column.out | 206 ++++++++++++++++++ .../hive/test_hive_struct_add_column.groovy | 157 +++++++++++++ 9 files changed, 376 insertions(+) create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0 create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_1 create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_2 create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_3 create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_4 create mode 100644 docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_5 create mode 100644 regression-test/data/external_table_p0/hive/test_hive_struct_add_column.out create mode 100644 regression-test/suites/external_table_p0/hive/test_hive_struct_add_column.groovy diff --git a/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql index ad6d326823bdfe..26bfdc8bdfe287 100644 --- a/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql +++ b/docker/thirdparties/docker-compose/hive/scripts/create_preinstalled_table.hql @@ -1871,6 +1871,19 @@ LOCATION msck repair table test_string_dict_filter_orc; +create table test_hive_struct_add_column_orc ( + `id` int, + `name` string, + `details` struct, + `sex` int, + `complex` array>> +) +STORED AS ORC +LOCATION '/user/doris/preinstalled_data/orc_table/test_hive_struct_add_column_orc'; + +msck repair table test_hive_struct_add_column_orc; + + show tables; diff --git a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0 b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0 new file mode 100644 index 0000000000000000000000000000000000000000..df41136523a380d98811004bbde488a3f67f95c4 GIT binary patch literal 578 zcmeYdau#G@;9?VE;b0A5&;~MvxtJLk7=(B@ScTX)m;|^aF5JNk%nY0i3LwJ``9EzxLP%?dGrL#Ts+!S>Waz6J#z z<^T;Ij<}wW0gq2k{{O%IOxni_d$!)pS^T#1_MbCLSmYy<*6&&Jv2^qQQqFmLF~RFM zO6R{lR+pf{uk?Q}!xo^kUnM?CdYHhQ@Zizo1kt3&2|^DhP2f)GNO(T!K|-j|gQQZB zOGT4PSp$XK93(wgRMjo0D&tdT)b6xX+rXB-fDM~xPY9?o_%Sj(P7sSYqH^@?L7fZd zH6E^fu*%~mQIlrO3|@2O$U&YXZ@iiuOnr3L z1fA)8xiU!S|gH%Af!M literal 0 HcmV?d00001 diff --git a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_1 b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_1 new file mode 100644 index 0000000000000000000000000000000000000000..d6a1045e1d6ce309963c77d3b21aec6be9b29188 GIT binary patch literal 778 zcmeYdau#G@;9?VE;b0A5&;>F@xR@Cj7=(B^ScTX*#02CdnivBZ92giL2R%tjWnfg~ zVgtPBiHY}_D4zZjX67#O^L&grc5VG=y4pv3C3q=^HpfEB3f{|6_aEZ7K-wH{}5 zPk3JSK6l<1Xw@^drY9GVXgM(W@-Xl+F!(VG@{5QpVqow+ZOGSPz`=S!j5{f|r|?Jb z_DitNnxV3WbZ7J_$StJqAn+ zYk3Y2HM@7roY)!JrD^QirK)de9@=HAx>d!{czHx; zXR~C-&8aGmSrHL8m&_2p9K1AQ643Ic5y8ccSr5D#ZZur&YHc=cIM_A6IkaQ0vyX${ zqE5pG#iqMnT|lEdy3bxTR5!K^?Kpc?)W!P-!_y}VqF5TEEG+8`xl9Z_YaX+B6-0P4 zm~s|uRBOr+PV!|96moNr^wbuHBomhjntUroJ9n~LuBys_ o3=f@1Y?{x`%)oJzQGijRp+P{2iGfF>ozZ~3=?gQne~_~z07|wJjsO4v literal 0 HcmV?d00001 diff --git a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_2 b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_2 new file mode 100644 index 0000000000000000000000000000000000000000..46cb7e8647c07a62627b456c10068556b12ea842 GIT binary patch literal 940 zcmeYdau#G@;9?VE;b0A5&;>F@xR@Cj7=(B^ScTX*v;>SKo-qb6*f20W4tkQ5mXIJY z=}|(c(8Hwia~?XUPWp&88LHf2l3+kG#1LqR7{m~Mpdp+bTbKn}SR~E}1uz5vjWK$V zl*+)USjrcs>Z*6|!4VtQ?Te1=d2;5_lNv>V?M&yUzDVRrU|>iADlK{hR_YB@nyhD- zoc#Dn&yhuQ&V;mI={j%ACx2oTH$Hllr1MDVyaclZgBeiMq=!lA4GfBod}4}u zefd31ymS8u*?wnbl3?UyU^u{{#l*_Mz{J4Lz~IJEz|X+ooRL_RlbOm5lH0;8;>5tf z?RO@)K-=q#_c+5udAnbOerfTr^ofmojWq!D^vv-TDyh2FP>!sg_IwIID?oUgA~vu z|364FFuY^_#<)(9K|7ss6Z;_s2H&$AxmpYaST3YY_D$09Tl369fWom*=McS&}@RwS7%Q#*_V8ynel6vogZxU0jlUd3W-KfA0;e z?sC2gx^XDSu?Yptr@EX>Ihjlgi*gdhG7=|RD6>p?@Zb_lR`8QYyvV^N z&Qz%VAf{7p0`IPvYYt0~#Uvd&cI>3UX4xQZph9jy;XLR00o5}H zm5!YK*c-TD;pF&5&-XbnB)4!dd;>Z!LF~sVouh{j>U@|Kn54Pbsf%s(BoX$00b^z1 z%_6~RT_WCbNqMV8s=cy2lhXV)3JJ3t3vAZbWV*Ux!-h>8y$#iuE%(}}l0GfOYvZzK zOro9}#ZsO;UwUY&lfh=j)uP<&*$mC1_Ux+#tlOtGOgv(IjG>LAOj{C|&;<3$odt4%kP?NckTxh;@DF@xR@Cj7=(B^ScTX*>;&8-PB8^A*f20Wp7b;+m4Q)F zkS|QtPA}~EoHI{C6w|J63gO(#z{Y^j5F-Hxi8(++Jb;D-Jp&t}2{c4duk3lxnI}iS z)F^&?aOKFPNpnIvX8?_g04g(j3|1BkR932Y@CeAR_A6aS?ljE_+56;AjN-p5Mk0)z zsXdH55T`v(N^f9LOym<&jO%Ojt81JmEGqOp?`%3(0t_YI@G~&@u^8D{ zIGDu(S*hg;k@-d0KKaE8j(O>+IjP0LiFpccMTvRInZ?QZ&Ka4>iRt;lsfi^eIS?bd zuNQEl=GvDV{^?g`JU-sjHyp7M8krk1WE_B3VD3J*`6(>{)2lcU;{_!+vqxe564_M1%LkDmfJ%uqZnNgA+5y4h9C_9z(tc10Lqv7nTJ^ zHk{mGxUuoa|K}WGEfQ`aNy|qgIY(< zC8|GAE9}y2P;8p(-P0V}+24KDP~F%vwBzPholqx!jdd-H?syz3=>h(#Pw zI(qn^&WFi?k2DrL?O|IziHW^mfLmGExLqVTtxLo^E-7!7NVQj%XHuHqMv>yetX3gm zc4L9f+L}!vn>K9P=xwOJY`ND)mGo&LUK^J^V+!@!D3 literal 0 HcmV?d00001 diff --git a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_4 b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_4 new file mode 100644 index 0000000000000000000000000000000000000000..b8f4d0e0658fd5d8fd3fa93daa6ea991918fb70a GIT binary patch literal 1127 zcmeYdau#G@;9?VE;b0A5&;>F@xR@Cj7=(B^ScTX*f&`)@)-eY#*f20Wp7b;+m4Q)F zkS|QtPA}~EoHI{C6w|J63gO(#z{Y^j5F-Hxi8)LG3?4v3f}Vj5(F7VIs8{y9=ggBM zUuqP;J-BjY(xf>doil(&MF5o5`@IG_W$FJ05t;ZSN6P{PS&z<)@m-@1A?KiikM z^w{1b_EU@7?T>o782x`;K0%I2epoz6I2mU-PmW@px89m zyQev{v%mYQp}MhUXvfX1I-ySd8tYmX-SIf!n8YU>Fr(X>ZADB=_gzb6V@pHZ_zqhO z(~V11)I*inG_p@F<)0GzT*!w-^4Wx_i8G=nOkOp8&V217^MOI5u(3yQ#la?TkqkS1 zcW3qe4(B_$I+>T>Yt9jT_=uTnbD;s}29FPnKV@Qa6pp)WV3Iw`S|TFPE*>$>+ll#! z8bcTpL#V&4_hAPKzoPQJ*Eg#fhFJ2kpG_)U@o0&;t4qP8Mc#tbm2Gc1ToRM=x)a07 zUf;0!!K3^F5%K?Rv+ECj7ir-;UvU0-^?7EMe~VV}s?>2lS-wBEG;$aF+m@e-puZuv==p4GI;znkBs=yS07%-`Qpq&>({J&ed&~RNdH&6RlAe!?ns`Q+jIN!;YiOE zaqpIzZ-xa+%s>2-x^vh48>dVS1-EC4>W^}~-#WZc>0%?|MT!jmQTi@*R myZQL&&hN||>zD)>B^nw8l$aQJG`2Guus3~SX7&$qmIMIZ4VI$- literal 0 HcmV?d00001 diff --git a/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_5 b/docker/thirdparties/docker-compose/hive/scripts/preinstalled_data/orc_table/test_hive_struct_add_column_orc/000000_0_copy_5 new file mode 100644 index 0000000000000000000000000000000000000000..1536bc5a9592ca8bd6e01b686c8b218a350b475c GIT binary patch literal 1355 zcmeYdau#G@;9?VE;b0A5&;>F@xR@Cj7=(B^ScTX*(ggA(Cb0xC*f20Wp7b;+m4Q)F zkS|QtPA}~EoHI{C6w|J63gO(#z{Y^j5F-Hxi8)LG3?4v3f}Vj5(F7VIs8{y9=ggBM zUuqP;J-BjY(xf>doil(&MF5oYfvnVWg~T4^;qk1M)!p0Rqu1>eNXv2JyT0p5qp}l zXoZKT&S@XVu*p$vO8g993kCUw1^Ja381h({k2FY#Xz+emC8xq8{QVKwSt=?DK-!6+ zfsqjyV1BGjOe|~yTNuOs%sDKkY&w(RskN(%Md-kEhDnj4Rx+wUv<-+aj zCDXMkF8Drie!}X%s^W5&v}r@0;bpP^RZn)maKH1iW%ca8aZ8)JwbyNwzmRdTy|Odr zW72xV^%g;oWB&ZhU;jDoTebSL=zze%bE?M-va3$Fw?NSFyhBo@enYWo0J6QeocNj4N9|30-C0 z+x%)-xUuWzWoLa0vzh(-R+ZVXKUv+}SQ~r%pPi4~s)vuO_3qm(J37TxR-vr1#fR+& z`&+To4^AIAx|FFPJxgQz1ie3(tafaCZ#a3$+K#yU&x)9jhQ>M Yes true \N +sex INT Yes true \N +complex ARRAY>> Yes true \N + +-- !test_1 -- +1 Alice {"age": 25, "city": "New York", "email": null, "phone": null} \N \N +2 Blice {"age": 26, "city": "New York New York", "email": null, "phone": null} \N \N +3 Clice {"age": 27, "city": "New York New York New York", "email": null, "phone": null} \N \N +4 Dlice {"age": 28, "city": "New York New York New York New York", "email": null, "phone": null} \N \N +5 Elice {"age": 29, "city": "New York New York New York New York New York", "email": null, "phone": null} \N \N +11 AAlice {"age": 125, "city": "acity", "email": "alice@example.com", "phone": null} \N \N +12 BBlice {"age": 126, "city": "bcity", "email": "bob@example.com", "phone": null} \N \N +13 CClice {"age": 127, "city": "ccity", "email": "alicebob@example.com", "phone": null} \N \N +14 DDlice {"age": 128, "city": "dcity", "email": "xxxxxbob@example.com", "phone": null} \N \N +15 EElice {"age": 129, "city": "ecity", "email": null, "phone": null} \N \N +21 Charlie {"age": 218, "city": "San Francisco", "email": "asdacharlie@example.com", "phone": 123} \N \N +22 Charlie {"age": 228, "city": "San-Francisco", "email": "ssscharlie@example.com", "phone": 1234} \N \N +23 Charlie {"age": 238, "city": "SanxFrancisco", "email": "333charlie@example.com", "phone": 12345} \N \N +24 Charlie {"age": 248, "city": "San888Francisco", "email": "777charlie@example.com", "phone": 123456} \N \N +25 Charlie {"age": 258, "city": "San0000Francisco", "email": "9999chasasrlie@example.com", "phone": null} \N \N +31 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 0 \N +32 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 0 \N +33 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 1 \N +34 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 0 \N +35 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": null} \N \N +41 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": null}, {"a": 1, "b": null}] +42 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 1 [{"a": 2, "b": null}, {"a": 1, "b": null}] +43 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 2 [{"a": 3, "b": null}, {"a": 1, "b": null}] +44 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 1 [{"a": 4, "b": null}, {"a": 1, "b": null}] +45 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": 654321} 2 [{"a": 5, "b": null}, {"a": 1, "b": null}] +51 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": {"aa": "foo", "bb": 100}}, {"a": 1, "b": {"aa": "foo", "bb": 100}}] +52 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 2 [{"a": 2, "b": {"aa": "bar", "bb": 200}}] +53 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 1 [{"a": 3, "b": {"aa": "baz", "bb": 300}}] +54 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 2 [{"a": 8, "b": {"aa": "qux", "bb": 400}}] +55 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": 654321} 1 [{"a": 5, "b": {"aa": "abcd", "bb": 500}}] + +-- !test_2 -- +1 Alice {"age": 25, "city": "New York", "email": null, "phone": null} \N \N + +-- !test_3 -- +1 Alice {"age": 25, "city": "New York", "email": null, "phone": null} \N \N +2 Blice {"age": 26, "city": "New York New York", "email": null, "phone": null} \N \N +3 Clice {"age": 27, "city": "New York New York New York", "email": null, "phone": null} \N \N +4 Dlice {"age": 28, "city": "New York New York New York New York", "email": null, "phone": null} \N \N +5 Elice {"age": 29, "city": "New York New York New York New York New York", "email": null, "phone": null} \N \N +11 AAlice {"age": 125, "city": "acity", "email": "alice@example.com", "phone": null} \N \N +12 BBlice {"age": 126, "city": "bcity", "email": "bob@example.com", "phone": null} \N \N +13 CClice {"age": 127, "city": "ccity", "email": "alicebob@example.com", "phone": null} \N \N +14 DDlice {"age": 128, "city": "dcity", "email": "xxxxxbob@example.com", "phone": null} \N \N +15 EElice {"age": 129, "city": "ecity", "email": null, "phone": null} \N \N +21 Charlie {"age": 218, "city": "San Francisco", "email": "asdacharlie@example.com", "phone": 123} \N \N +22 Charlie {"age": 228, "city": "San-Francisco", "email": "ssscharlie@example.com", "phone": 1234} \N \N +23 Charlie {"age": 238, "city": "SanxFrancisco", "email": "333charlie@example.com", "phone": 12345} \N \N +24 Charlie {"age": 248, "city": "San888Francisco", "email": "777charlie@example.com", "phone": 123456} \N \N +25 Charlie {"age": 258, "city": "San0000Francisco", "email": "9999chasasrlie@example.com", "phone": null} \N \N +31 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 0 \N +32 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 0 \N +33 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 1 \N +34 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 0 \N +35 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": null} \N \N + +-- !test_4 -- +41 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": null}, {"a": 1, "b": null}] +42 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 1 [{"a": 2, "b": null}, {"a": 1, "b": null}] +43 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 2 [{"a": 3, "b": null}, {"a": 1, "b": null}] +44 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 1 [{"a": 4, "b": null}, {"a": 1, "b": null}] +45 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": 654321} 2 [{"a": 5, "b": null}, {"a": 1, "b": null}] +51 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": {"aa": "foo", "bb": 100}}, {"a": 1, "b": {"aa": "foo", "bb": 100}}] +52 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 2 [{"a": 2, "b": {"aa": "bar", "bb": 200}}] +53 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 1 [{"a": 3, "b": {"aa": "baz", "bb": 300}}] +54 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 2 [{"a": 8, "b": {"aa": "qux", "bb": 400}}] +55 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": 654321} 1 [{"a": 5, "b": {"aa": "abcd", "bb": 500}}] + +-- !test_5 -- +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N + +-- !test_6 -- +[{"a": 1, "b": null}, {"a": 1, "b": null}] +[{"a": 2, "b": null}, {"a": 1, "b": null}] +[{"a": 3, "b": null}, {"a": 1, "b": null}] +[{"a": 4, "b": null}, {"a": 1, "b": null}] +[{"a": 5, "b": null}, {"a": 1, "b": null}] +[{"a": 1, "b": {"aa": "foo", "bb": 100}}, {"a": 1, "b": {"aa": "foo", "bb": 100}}] +[{"a": 2, "b": {"aa": "bar", "bb": 200}}] +[{"a": 3, "b": {"aa": "baz", "bb": 300}}] +[{"a": 8, "b": {"aa": "qux", "bb": 400}}] +[{"a": 5, "b": {"aa": "abcd", "bb": 500}}] + +-- !test_7 -- +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N +\N + +-- !test_8 -- +[{"a": 1, "b": null}, {"a": 1, "b": null}] +[{"a": 2, "b": null}, {"a": 1, "b": null}] +[{"a": 3, "b": null}, {"a": 1, "b": null}] +[{"a": 4, "b": null}, {"a": 1, "b": null}] +[{"a": 5, "b": null}, {"a": 1, "b": null}] +[{"a": 1, "b": {"aa": "foo", "bb": 100}}, {"a": 1, "b": {"aa": "foo", "bb": 100}}] +[{"a": 2, "b": {"aa": "bar", "bb": 200}}] +[{"a": 3, "b": {"aa": "baz", "bb": 300}}] +[{"a": 8, "b": {"aa": "qux", "bb": 400}}] +[{"a": 5, "b": {"aa": "abcd", "bb": 500}}] + +-- !test_9 -- +0 +0 +0 + +-- !test_10 -- +1 +1 +1 +1 +1 +1 +1 + +-- !test_11 -- +2 +2 +2 +2 + +-- !test_12 -- +43 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 2 [{"a": 3, "b": null}, {"a": 1, "b": null}] +45 Eve {"age": 27, "city": "Seattle", "email": "eve@example.com", "phone": 654321} 2 [{"a": 5, "b": null}, {"a": 1, "b": null}] +52 Bob {"age": 30, "city": "Los Angeles", "email": "bob@example.com", "phone": 789012} 2 [{"a": 2, "b": {"aa": "bar", "bb": 200}}] +54 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 2 [{"a": 8, "b": {"aa": "qux", "bb": 400}}] + +-- !test_13 -- + +-- !test_14 -- +53 Charlie {"age": 28, "city": "San Francisco", "email": "charlie@example.com", "phone": 456789} 1 [{"a": 3, "b": {"aa": "baz", "bb": 300}}] +54 David {"age": 32, "city": "Chicago", "email": "david@example.com", "phone": 987654} 2 [{"a": 8, "b": {"aa": "qux", "bb": 400}}] + +-- !test_15 -- +41 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": null}, {"a": 1, "b": null}] {"a": 1, "b": null} +51 Alice {"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 1 [{"a": 1, "b": {"aa": "foo", "bb": 100}}, {"a": 1, "b": {"aa": "foo", "bb": 100}}] {"a": 1, "b": {"aa": "foo", "bb": 100}} + +-- !test_16 -- +[{"a": 2, "b": null}, {"a": 1, "b": null}] + +-- !test_17 -- +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} + +-- !test_18 -- +{"age": 25, "city": "New York", "email": null, "phone": null} + +-- !test_19 -- +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 31 +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 41 +{"age": 25, "city": "New York", "email": "alice@example.com", "phone": 123456} 51 + +-- !test_20 -- +{"age": 25, "city": "New York", "email": null, "phone": null} 1 + +-- !test_21 -- +0 3 +2 4 +1 7 +\N 16 + diff --git a/regression-test/suites/external_table_p0/hive/test_hive_struct_add_column.groovy b/regression-test/suites/external_table_p0/hive/test_hive_struct_add_column.groovy new file mode 100644 index 00000000000000..91a724fc10fd27 --- /dev/null +++ b/regression-test/suites/external_table_p0/hive/test_hive_struct_add_column.groovy @@ -0,0 +1,157 @@ +// 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. + +suite("test_hive_struct_add_column", "all_types,p0,external,hive,external_docker,external_docker_hive") { + + String enabled = context.config.otherConfigs.get("enableHiveTest") + if (enabled == null || !enabled.equalsIgnoreCase("true")) { + logger.info("diable Hive test.") + return; + } + + try { + String hms_port = context.config.otherConfigs.get("hms_port") + String catalog_name = "test_hive_struct_add_column" + String externalEnvIp = context.config.otherConfigs.get("externalEnvIp") + + sql """drop catalog if exists ${catalog_name}""" + sql """create catalog if not exists ${catalog_name} properties ( + "type"="hms", + 'hive.metastore.uris' = 'thrift://${externalEnvIp}:${hms_port}' + );""" + sql """use `${catalog_name}`.`default`""" + + qt_desc """ desc test_hive_struct_add_column_orc;""" + qt_test_1 """ select * from test_hive_struct_add_column_orc order by id;""" + qt_test_2 """ select * from test_hive_struct_add_column_orc where id = 1 order by id;""" + qt_test_3 """ select * from test_hive_struct_add_column_orc where complex is null order by id;""" + qt_test_4 """ select * from test_hive_struct_add_column_orc where complex is not null order by id""" + qt_test_5 """ select complex from test_hive_struct_add_column_orc where complex is null order by id """ + qt_test_6 """ select complex from test_hive_struct_add_column_orc where complex is not null order by id """ + qt_test_7 """select complex from test_hive_struct_add_column_orc where complex is null order by id; """ + qt_test_8 """select complex from test_hive_struct_add_column_orc where complex is not null order by id;""" + qt_test_9 """select sex from test_hive_struct_add_column_orc where sex = 0 order by id;""" + qt_test_10 """select sex from test_hive_struct_add_column_orc where sex = 1 order by id;""" + qt_test_11 """select sex from test_hive_struct_add_column_orc where sex = 2 order by id;""" + qt_test_12 """select * from test_hive_struct_add_column_orc where sex = 2 order by id; """ + qt_test_13 """select * from test_hive_struct_add_column_orc where id =sex order by id;""" + qt_test_14 """select * from test_hive_struct_add_column_orc where id -52=sex order by id;""" + qt_test_15 """select *,complex[1] from test_hive_struct_add_column_orc where struct_element(complex[1],1) = 1 order by id;""" + qt_test_16 """ select complex from test_hive_struct_add_column_orc where struct_element(complex[1],1) = 2 and struct_element(complex[1],2) is null order by id ; """ + qt_test_17 """select details from test_hive_struct_add_column_orc where struct_element(details,1) = 25 and struct_element(details,4) is not null order by id;""" + qt_test_18 """select details from test_hive_struct_add_column_orc where struct_element(details,1) = 25 and struct_element(details,4) is null order by id;""" + qt_test_19 """ select details,id from test_hive_struct_add_column_orc where struct_element(details,1) = 25 and struct_element(details,4) is not null order by id ;""" + qt_test_20 """ select details,id from test_hive_struct_add_column_orc where struct_element(details,1) = 25 and struct_element(details,4) is null order by id;""" + qt_test_21 """ select sex,count(*) from test_hive_struct_add_column_orc group by sex order by count(*);""" + + + sql """drop catalog if exists ${catalog_name}""" + + } finally { + } + +} + + +/* +drop table user_info_orc; +CREATE TABLE user_info_orc ( + id INT, + name STRING, + details STRUCT +) +stored as orc; + +INSERT INTO TABLE user_info_orc +VALUES + (1, 'Alice', named_struct('age', 25, 'city', 'New York')), + (2, 'Blice', named_struct('age', 26, 'city', 'New York New York')), + (3, 'Clice', named_struct('age', 27, 'city', 'New York New York New York')), + (4, 'Dlice', named_struct('age', 28, 'city', 'New York New York New York New York')), + (5, 'Elice', named_struct('age', 29, 'city', 'New York New York New York New York New York')); + +ALTER TABLE user_info_orc CHANGE COLUMN details details STRUCT; + +INSERT INTO TABLE user_info_orc +VALUES + (11, 'AAlice', named_struct('age', 125, 'city', 'acity', 'email', 'alice@example.com')), + (12, 'BBlice', named_struct('age', 126, 'city', 'bcity', 'email', 'bob@example.com')), + (13, 'CClice', named_struct('age', 127, 'city', 'ccity', 'email', 'alicebob@example.com')), + (14, 'DDlice', named_struct('age', 128, 'city', 'dcity', 'email', 'xxxxxbob@example.com')), + (15, 'EElice', named_struct('age', 129, 'city', 'ecity', 'email', NULL)); + + + +ALTER TABLE user_info_orc CHANGE COLUMN details details STRUCT; + + +INSERT INTO user_info_orc +VALUES + (21, 'Charlie', named_struct('age', 218, 'city', 'San Francisco', 'email', 'asdacharlie@example.com','phone',123)), + (22, 'Charlie', named_struct('age', 228, 'city', 'San-Francisco', 'email', 'ssscharlie@example.com','phone',1234)), + (23, 'Charlie', named_struct('age', 238, 'city', 'SanxFrancisco', 'email', '333charlie@example.com','phone',12345)), + (24, 'Charlie', named_struct('age', 248, 'city', 'San888Francisco', 'email', '777charlie@example.com','phone',123456)), + (25, 'Charlie', named_struct('age', 258, 'city', 'San0000Francisco', 'email', '9999chasasrlie@example.com','phone',NULL)); + + + +desc user_info_orc; +ALTER TABLE user_info_orc add columns (sex int); + +INSERT INTO TABLE user_info_orc +VALUES + (31, 'Alice', named_struct('age', 25, 'city', 'New York', 'email', 'alice@example.com', 'phone', 123456),0), + (32, 'Bob', named_struct('age', 30, 'city', 'Los Angeles', 'email', 'bob@example.com', 'phone', 789012),0), + (33, 'Charlie', named_struct('age', 28, 'city', 'San Francisco', 'email', 'charlie@example.com', 'phone', 456789),1), + (34, 'David', named_struct('age', 32, 'city', 'Chicago', 'email', 'david@example.com', 'phone', 987654),0), + (35, 'Eve', named_struct('age', 27, 'city', 'Seattle', 'email', 'eve@example.com', 'phone', NULL),NULL); + + +ALTER TABLE user_info_orc add columns (complex array>); + +INSERT INTO TABLE user_info_orc +VALUES + (41,'Alice', named_struct('age', 25, 'city', 'New York', 'email', 'alice@example.com', 'phone', 123456), 1, array(named_struct('a', 1),named_struct('a', 1))), + (42,'Bob', named_struct('age', 30, 'city', 'Los Angeles', 'email', 'bob@example.com', 'phone', 789012), 1, array(named_struct('a', 2),named_struct('a', 1))), + (43,'Charlie', named_struct('age', 28, 'city', 'San Francisco', 'email', 'charlie@example.com', 'phone', 456789), 2, array(named_struct('a', 3),named_struct('a', 1))), + (44,'David', named_struct('age', 32, 'city', 'Chicago', 'email', 'david@example.com', 'phone', 987654), 1, array(named_struct('a', 4),named_struct('a', 1))), + (45,'Eve', named_struct('age', 27, 'city', 'Seattle', 'email', 'eve@example.com', 'phone', 654321), 2, array(named_struct('a', 5),named_struct('a', 1))); + +ALTER TABLE user_info_orc CHANGE COLUMN complex complex array>>; + +INSERT INTO TABLE user_info_orc +VALUES + (51, 'Alice', named_struct('age', 25, 'city', 'New York', 'email', 'alice@example.com', 'phone', 123456), 1, array(named_struct('a', 1, 'b', named_struct('aa', 'foo', 'bb', 100)),named_struct('a', 1, 'b', named_struct('aa', 'foo', 'bb', 100)))), + (52, 'Bob', named_struct('age', 30, 'city', 'Los Angeles', 'email', 'bob@example.com', 'phone', 789012), 2, array(named_struct('a', 2, 'b', named_struct('aa', 'bar', 'bb', 200)))), + (53, 'Charlie', named_struct('age', 28, 'city', 'San Francisco', 'email', 'charlie@example.com', 'phone', 456789), 1, array(named_struct('a', 3, 'b', named_struct('aa', 'baz', 'bb', 300)))), + (54, 'David', named_struct('age', 32, 'city', 'Chicago', 'email', 'david@example.com', 'phone', 987654), 2, array(named_struct('a', 8, 'b', named_struct('aa', 'qux', 'bb', 400)))), + (55, 'Eve', named_struct('age', 27, 'city', 'Seattle', 'email', 'eve@example.com', 'phone', 654321), 1, array(named_struct('a', 5, 'b', named_struct('aa', 'abcd', 'bb', 500)))); + + + +cp user_info_orc/ => test_hive_struct_add_column_orc/ + +create table test_hive_struct_add_column_orc ( + `id` int, + `name` string, + `details` struct, + `sex` int, + `complex` array>> +) +STORED AS ORC; +LOCATION '/user/doris/preinstalled_data/orc_table/test_hive_struct_add_column_orc'; +*/