From 8211a4ceff44badca6eaa85d4ac5fffec61c370c Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Fri, 13 Mar 2026 14:44:16 -0500 Subject: [PATCH 1/5] Added support for list namespace --- .../scenarios/basic-operations/run.sh.tmpl | 9 ++++ .../scenarios/basic-operations/verify.sh.tmpl | 15 ++++-- ice/src/.DS_Store | Bin 0 -> 6148 bytes .../main/java/com/altinity/ice/cli/Main.java | 23 +++++++++ .../ice/cli/internal/cmd/ListNamespace.java | 45 ++++++++++++++++++ ice/src/test/.DS_Store | Bin 0 -> 6148 bytes ice/src/test/resources/.DS_Store | Bin 0 -> 6148 bytes ice/src/test/resources/com/.DS_Store | Bin 0 -> 6148 bytes ice/src/test/resources/com/altinity/.DS_Store | Bin 0 -> 6148 bytes .../test/resources/com/altinity/ice/.DS_Store | Bin 0 -> 6148 bytes .../resources/com/altinity/ice/cli/.DS_Store | Bin 0 -> 6148 bytes .../com/altinity/ice/cli/internal/.DS_Store | Bin 0 -> 6148 bytes .../ice/cli/internal/iceberg/.DS_Store | Bin 0 -> 8196 bytes .../internal/iceberg/parquet/22sas.parquet | Bin 0 -> 1005 bytes .../iceberg/parquet/int64-schema.parquet | Bin 0 -> 1022 bytes 15 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 ice/src/.DS_Store create mode 100644 ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java create mode 100644 ice/src/test/.DS_Store create mode 100644 ice/src/test/resources/.DS_Store create mode 100644 ice/src/test/resources/com/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/ice/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/ice/cli/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store create mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet create mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/int64-schema.parquet diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl index b4ffde0a..74d2df04 100644 --- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl +++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl @@ -17,6 +17,15 @@ INPUT_PATH="${SCENARIO_DIR}/${INPUT_FILE}" {{ICE_CLI}} --config {{CLI_CONFIG}} create-namespace ${NAMESPACE_NAME} echo "OK Created namespace: ${NAMESPACE_NAME}" +# List namespaces via list-namespace command (top-level) +{{ICE_CLI}} --config {{CLI_CONFIG}} list-namespace > /tmp/basic_ops_list_namespace.txt +if ! grep -q "${NAMESPACE_NAME}" /tmp/basic_ops_list_namespace.txt; then + echo "FAIL: list-namespace output missing namespace ${NAMESPACE_NAME}" + cat /tmp/basic_ops_list_namespace.txt + exit 1 +fi +echo "OK list-namespace listed ${NAMESPACE_NAME}" + # List namespaces (ice describe) - no output when no tables yet {{ICE_CLI}} --config {{CLI_CONFIG}} describe echo "OK Listed namespaces" diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl index 59692b4c..e5be24ed 100644 --- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl +++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl @@ -3,12 +3,13 @@ set -e # Verification script - checks that the test completed successfully # Exit code 0 = success, non-zero = failure -# Expects run.sh to have written: basic_ops_describe.txt, basic_ops_scan_iris.txt, -# basic_ops_scan_partitioned.txt, basic_ops_scan_sorted.txt, basic_ops_files.txt under /tmp +# Expects run.sh to have written: basic_ops_list_namespace.txt, basic_ops_describe.txt, +# basic_ops_scan_iris.txt, basic_ops_scan_partitioned.txt, basic_ops_scan_sorted.txt, +# basic_ops_files.txt under /tmp echo "Verifying basic operations test..." -for f in /tmp/basic_ops_describe.txt /tmp/basic_ops_scan_iris.txt /tmp/basic_ops_scan_partitioned.txt /tmp/basic_ops_scan_sorted.txt; do +for f in /tmp/basic_ops_list_namespace.txt /tmp/basic_ops_describe.txt /tmp/basic_ops_scan_iris.txt /tmp/basic_ops_scan_partitioned.txt /tmp/basic_ops_scan_sorted.txt; do if [ ! -f "$f" ]; then echo "FAIL Output file not found: $f" exit 1 @@ -65,8 +66,14 @@ if ! grep -qE "s3a://test-bucket/warehouse/test_ns/.*/data/.*\.parquet" "$F"; th echo "FAIL $F does not contain expected datafile path pattern" exit 1 fi +# Verify list-namespace output contains the test namespace +if ! grep -q "test_ns" /tmp/basic_ops_list_namespace.txt; then + echo "FAIL basic_ops_list_namespace.txt does not contain expected namespace 'test_ns'" + exit 1 +fi + # Cleanup temp files -rm -f /tmp/basic_ops_describe.txt /tmp/basic_ops_scan_iris.txt /tmp/basic_ops_scan_partitioned.txt /tmp/basic_ops_scan_sorted.txt /tmp/basic_ops_files.txt +rm -f /tmp/basic_ops_list_namespace.txt /tmp/basic_ops_describe.txt /tmp/basic_ops_scan_iris.txt /tmp/basic_ops_scan_partitioned.txt /tmp/basic_ops_scan_sorted.txt /tmp/basic_ops_files.txt echo "OK Verification passed" exit 0 diff --git a/ice/src/.DS_Store b/ice/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..33df6e8374a6e29af68e86dd8509763278e09280 GIT binary patch literal 6148 zcmeHK%}T>S5Z<-XrW7Fu6^{#E3#LV|;w8lT0!H+pQWFw17_+5G?V%KM)EDwmd>&_Z zH)1ho5jz9B-~8@oKgj+t#<)L=`;0k^F&i2pN2Ni~-5A<1$%q`sh~~v4%47ugyNUgE zz;Cx$$r4tu^85EklPoPt*ZtrdEo*bDZMW^NeHT2+c~FMstnkC>4O*8{W>Kw&(N&tv z$Ii}~%*!y%lc_35;{;M}uhTr1b6?K#xKOo$4%i*LGj{eCi-Fq{?y@Hq{iBmXPYj30 z%Vo#jJvcnQ7(ZptxqQ`ha$sA@w!s?SK>1qDOEAqdnLmK9&ad+bi2-7O7$64LnE`Vu z*xhv|f!0n85Ce@2;Qk<>A$kTYjcV(F4zJG`w-8Z4$F~HcFz6YqG(rS~>ry~n%FPpl z>vHf5ljj+%H0pB3)yy!CnYn(va5X#lg-U1K(?~rrKn$!h(9))Z=l?nUGL4V?)e^FZ z0b<~vF~F@+F!Eth=4}13JUnX!w0meMm{*|!0{Y4&01Vtm_Ek{F1?rIJ8LTwoDCk$^ PfOHX1giuEe`~m}?+9OI0 literal 0 HcmV?d00001 diff --git a/ice/src/main/java/com/altinity/ice/cli/Main.java b/ice/src/main/java/com/altinity/ice/cli/Main.java index efbe1721..c9250795 100644 --- a/ice/src/main/java/com/altinity/ice/cli/Main.java +++ b/ice/src/main/java/com/altinity/ice/cli/Main.java @@ -22,6 +22,7 @@ import com.altinity.ice.cli.internal.cmd.Files; import com.altinity.ice.cli.internal.cmd.Insert; import com.altinity.ice.cli.internal.cmd.InsertWatch; +import com.altinity.ice.cli.internal.cmd.ListNamespace; import com.altinity.ice.cli.internal.cmd.ListPartitions; import com.altinity.ice.cli.internal.cmd.Scan; import com.altinity.ice.cli.internal.config.Config; @@ -708,6 +709,28 @@ void deleteNamespace( } } + @CommandLine.Command(name = "list-namespace", description = "List namespaces.") + void listNamespace( + @CommandLine.Parameters( + arity = "0..1", + paramLabel = "", + description = + "Parent namespace to list children of (e.g. parent_ns). Omit for top-level.") + String parent, + @CommandLine.Option( + names = {"--json"}, + description = "Output JSON instead of YAML") + boolean json) + throws IOException { + try (RESTCatalog catalog = loadCatalog()) { + Namespace namespace = + (parent == null || parent.isEmpty()) + ? Namespace.empty() + : Namespace.of(parent.split("[.]")); + ListNamespace.run(catalog, namespace, json); + } + } + @CommandLine.Command(name = "delete", description = "Delete data from catalog.") void delete( @CommandLine.Parameters( diff --git a/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java b/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java new file mode 100644 index 00000000..a8f56c7b --- /dev/null +++ b/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2025 Altinity Inc and/or its affiliates. All rights reserved. + * + * Licensed 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 + */ +package com.altinity.ice.cli.internal.cmd; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.iceberg.catalog.Namespace; +import org.apache.iceberg.rest.RESTCatalog; + +public final class ListNamespace { + + private ListNamespace() {} + + public static void run(RESTCatalog catalog, Namespace parent, boolean json) throws IOException { + List namespaces = catalog.listNamespaces(parent); + List names = + namespaces.stream().map(Namespace::toString).sorted().collect(Collectors.toList()); + var result = new Result(names); + output(result, json); + } + + private static void output(Result result, boolean json) throws IOException { + ObjectMapper mapper = + json + ? new ObjectMapper() + : new ObjectMapper(new YAMLFactory().enable(YAMLGenerator.Feature.MINIMIZE_QUOTES)); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + System.out.println(mapper.writeValueAsString(result)); + } + + @JsonInclude(JsonInclude.Include.NON_NULL) + record Result(List namespaces) {} +} diff --git a/ice/src/test/.DS_Store b/ice/src/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..124cacc8bd4088ceab32c0863768584f159bcd9f GIT binary patch literal 6148 zcmeHK%}T>S5T0$TO(;SSDjpZS7Ho@P#Y?F51&ruHr6#s$G-jpg&!H4@)EDwmd>&_Z zH^tg|6)7_?`_0bIB+Qqvy8{5CJ?b?8ssP}i5*Az>RtT+=E=j?9N{E7<5l+(AFjgVX zKbE4|@gEtWZ&!jR2w)7s_wN_J#!)(~*FQy}SlZYuJ7uTh-1?7d;tzx2C~XIWYnojs z6^FSUgqKl&(yeZvs$>{MNq?XdqFx_EZmy!FrzUMRN_wfz_059gI&QbRJDoP`HCdn4 zu5G}ot^!Ilk@I#{F10QL!rRGP0N9Y(IOrAt zk*<+i(57C3a->DiVrCFmP=rZEG^xV27{a8ZU)ng&VrI~!gRsqqux}Q&LlOGz_y+b9TxXj=@ k1r2=^V=NuTd#GB_FUdgkEM^ALgTfa9O#=_iz@IYk1(PF*zyJUM literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/.DS_Store b/ice/src/test/resources/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d44deb0915460c4fe3c42cda413adf9ff6f5bde5 GIT binary patch literal 6148 zcmeHK-AcnS6i&A3GKSC#6)ywc4(x{D#G5kb3s}($mD$>%#jY7^XD`N}m-<3JiqGRY zNeT{kE#l6Bo7)#HWh*}*S$I^&)}>WKkjV3mQoF&#YrFW{G1`^aA{A&VFw z2L2fXyfO5L16Y(jTYoGM&squX0U8SCm8gJ#zH$iw1NV^w9W-%?I^=m4OM^HH`gJ)V OT?8~C)DZ)}z`z&E6-fdB literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/.DS_Store b/ice/src/test/resources/com/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bd6ab25bb9332b2c60af6ff32ca2bc5ddf2cfcc0 GIT binary patch literal 6148 zcmeHK%}T>S5Z<-bZYe?!DjpZS7EFs^#Y>3w1&ruHr6#0kFlI}e8l)6*)EDwmd>&_Z zH(+TFodd`@@MVwSPjFrSVq z2KtL8T)SWaOJLnG`?mftQ6cy~!f_H$GspSl8@2l8RzoyIOWgU7D)+M>n@zo7a)Z4~ zrIN7JgYYUI<-_*QnM$)DPDc}+5Jw{jxxJ3lNadcIrO{O9`ocyX=iAo>9SLT)Rgv0%@RP1w?C|il$nL0b<}s4B-ACp&_~!3xj&=fDc}u(O*YI0Uh5Gh|;2Ku`mc8 z5N=WdO)9rf3~tiFE^VA^u`p=T8P_wzICkdp@xt}&V3#_aan~Syi2-6@nSq+=w(_wk`^dg_8oxvx Z;#`Y`K^z6`IvtQM0-6x|5Cgx!z!$|_OyB?j literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/altinity/.DS_Store b/ice/src/test/resources/com/altinity/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..32e9169c28a49a2785331dda3a3d54a60b1e743e GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8O({YSDjpZS7EFs^#Y>3w1&ruHr6wk5FlI}WnnNk%s4wKB_&m<+ zZotx>MeGdhe)GGV{UH0p7~|e7>N93D#w=)v9F;YK?zN$YNk-&2Mm`Bs8G`j0PE72t z1AcpxCG3&KVfpj>(m)A6 z_U^gNiXh42sVYdK7*g(Tk}Q&?Cudodt6E5RJ?sV4@Afn^4o+O+Zfzkpw6?IVA=ge+o! z82D!l@Ycv5d9WyRwyrD>&sqWP0U8SCRj7b~zH|uy1NV^w71VKoI^?+qD~&h``c*j~ OT?7;%)DZ)}z`!?B`$*;h literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/altinity/ice/.DS_Store b/ice/src/test/resources/com/altinity/ice/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fbb7feebc094c32ecefae1af70188ceb2c17f718 GIT binary patch literal 6148 zcmeHK-AcnS6i&A3GKSC#6)ywc4(x{D#G5kb3s}($mD$>%#oCOuvlnB~OMM|9#pm&y zBn8KIE#l6B{{OZX_~0?2|QJHl|@Jl5Cg;jF|g?j*porD zH=PJtKQTZItT2H4gM^0YSu73etphr|K4ZLrhypskB@m@W&thp1A|Tw90-928pBUVf zgJ0S_&thrNlryephH>o7)#HWh*}*S$I^&)}>WKkjV3~osF&#YrFW{G1`^aA|A&VFw z2L2fXyfO5L16Y(jTUVBcXRUo5VU%CWWG0~VBi~$d`R>F literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/altinity/ice/cli/.DS_Store b/ice/src/test/resources/com/altinity/ice/cli/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4961c0f6bc765800e5c2450579f2c5c1d2d94fdf GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-BN@cR6H(tEtnR;ikDF93mDOZN=<0dV9b^#HHT8jQD4YM@p+ut z-GHSzcoMNQu=!@^XLsj=> zQgK-7L3kZa@{zN9u97T>lF3XbMB@pB+}%XUSmgsXPsXXv^^HTcL~G>iFBUzwBi&_3 zF1p93y^ienPnOG;*gHHryBs~oFNu0HRB~Wl%Z|ko-a%Qb>eZhmu}U7nSLT)Rgv0S5Z-O8O({YSDjpZS7EFs^#Y?F51&ruHr6wlSV9b`ZHHT8jQD4YM@p+ut z-3ZlyHxWAnv)}B_%x>m`>uHD8vRWg1cd_U>9pNlH zV$nT3?sY`Jf3#e-teyRXlk?GI@|4OKO(X}-m24R-;T4Q8H9dP-n#gnvo-(V9CL{)k z0b+m{ST_dDNno|tt#GQB7$63IWB~UE0gC7vEHtXE0~)+OqrZWO0ye%S5QRb4V4)E_ zAY7*c>Qru?7+j~rxG-_9!9t@>XI!le^O%*(#|u}h!?;l4jJq1CB?gFrRR-$1YvcKU z2ER<@BY!o8dc*)R@Xr|FjiEOjKvCvw{Z<~HwF2}G6b0i7G(f;!xdcE5_mMs2)P8|B Z#JL6wjW`RAt8_rR2q;3RAqIYdfe$AROY8su literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store b/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..82ecff47e17170e41ca3ff370472eb63bfec443e GIT binary patch literal 8196 zcmeHMTWl0n82u@F6llA%T(YtT5LRs~tw19z?H0=|#cuDQ>+H@zCroGBo!MQa zsWvgj#0y@ckD3@0AB+-sFd-TrOuXQW8YD!cCPsNOQC>9aoBugymP-o{B*sgalbrLP z|28xKKi_}Oo>>6Eu9Ddb5CZ^}I;Ywq8m`f}p7(i82_>~ek^BKlU_p?t_>*~Oo^>RM zG7x1T%0QHXC<9Rj{tFqPJ)1Z6I{UuVMq`wLC<8ZT2Kf4rpw4MJq_dKWrGo}>1R%H&H=(F5z=%>XC)P`bWM4Bz|a-LBL+%$(kHk%(R4^>C6(@g(j73oGlnM=6n7`T zgfIt8OB#()2BHki&j2rE$v&kXL|SUKUaV260LzPV`G#TH?R-cR&mtu3zloz?%~0TZ3g4R zW!ty&jy2#K6BcVwzGLT_nq&2PTwhsLNyE#Is+LqoN_l&#WCxFkd#u(I?4U^xzt1!I zT})MbhY3wmPv{4@rn_j-XsW6ZuhZ{f13m?!YKAmSvAfv75qhCa^QEMf-J=gWM&5Fm zW=gjXwpkx8htX<#q_C6Sr;il8i3tkPXAPK=; z8%3+HLYN94Y8OexJ0dxE>M`xW<4Tc`gx;sBqx^z9Ow%&Y)i=kQ9_ZJ}L$lqoO&F$E zAfc?CRaG^a-XNhQGMh}dNN)KYeDU2%hZJmsoiGLkaG?Uvz_V~1UV%5@6ubu?z^CvT zd=6*fOZXNpz)$ci{06_nABcDhHe(FqxB_p-7Hq{f?8G$gz;4XoKJ3RV4&o5z(85DF zjy4wY7*691K8jD`^Y{Y3gfHW(_%@!vlXwc>#gFh~`~<(iAMi)KfIs6ecoF|p6s1vV zR$_{-#FeD7UZJmjyeZY18IycRaro$QwsKXqo-S9CtgJyoy>(RO z(ADZf>)Y0-gnDg3$gW*S>>h2QWaArCDpi=K2$scLS{c=mRui%t+lfWVuq|5|Rg_j6 zvfH*ZUgR1GJ|6GR(3Q?;e*;`!gE!$MoQ4kxuIJ$!_#Q42M1dfxVUvLA3S5P2aUHJ5 z4Vc1q?7(|*3jsERJ-8ElaW}zrfB-v;qnO76ngm)8CvggWED>ZM!&!VBpTOhz9D(=6 z5WKJBTM~Ge;JCXAL`m`e`EV>}i>~9jhe=Zf@zqWdcS9Mdk=8MO{_nZ|_x~HZW@H>? zAj-i1D+5@Y$!7TWf4x;zAzgy{!_;}>cC(TS7aF(;my6>#(Mx|A(mWCB(jlFdlr+@- V@ecvf{(r^K)oA}0AiN2OzW_bm9#sGU literal 0 HcmV?d00001 diff --git a/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet b/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet new file mode 100644 index 0000000000000000000000000000000000000000..fcbc43b89c86eea527efa17c831d1ae252e345ae GIT binary patch literal 1005 zcmb7DPiqrF6rb5FLn;ANafVq~N|1J`n8p~a6xkl$rfDsv+N=j9x6Qi5Vw1*gH0USr z;K7qe@#N97pF=#0M?Z$|&FApD%S40cUkD_}40P*)MD0jc(jj9o+Mo6_X7qbm{^$*! zB)Cr76a_OXH6|GV&v6B>`%l8t!8n`@TDQ^P>*Ra@kEn*gderX$Kn!~nLGlZb-l1W= zNAZiRqe=HYI3)tS-;B;7j=nIPydKBRF(sjR_)!sv~Tg@hRZ*Kb2=66B0j z3xpS>BOTv!v&uM9F#i{HdYU>+6$N==Sppt2%s$DGRXjI~m?4YD=)V|jVi?46`|%9# zVBTijGk&s*uC0LQ3|gP#ZbLeB@Hyd$qjnlhCGjxs4UbNGAoEnPdyQ^92Q{C_l+eB| z2jELvuYgm~yiE!v)K5!YTfu7J{-1z)fm8!Y;sNO|p#0L&0kEVGNybNdz;$Z{Hx{u? z%J!s~&$H$4Mlu5%qAN>%wSr%{;9Jh0&~&1ia&>lib(>QnaMgDkwD09HiuOOQrFwfm z#A~)!$W}KVaTjrfVFx!6J6P!$Gz<~LPHeu|Epy{O+Ty`_AkddG+O zf!A=eI-hq7v4tCq5cz$R`i^1UX8eA13VGhGVaM!cVvq#_VT9og2`!7KI~$>~`< nTx|9Gi;W~X85PgtWI%VdSSl?oFD>gbUDNb|-*k-*=+FNHmXW3z literal 0 HcmV?d00001 From 05d8218302b2ccee366941b3f3e2002acd61167e Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Fri, 13 Mar 2026 14:46:24 -0500 Subject: [PATCH 2/5] Removed temporary files --- .gitignore | 1 + ice/src/.DS_Store | Bin 6148 -> 0 bytes ice/src/test/.DS_Store | Bin 6148 -> 0 bytes ice/src/test/resources/.DS_Store | Bin 6148 -> 0 bytes ice/src/test/resources/com/.DS_Store | Bin 6148 -> 0 bytes ice/src/test/resources/com/altinity/.DS_Store | Bin 6148 -> 0 bytes .../test/resources/com/altinity/ice/.DS_Store | Bin 6148 -> 0 bytes .../resources/com/altinity/ice/cli/.DS_Store | Bin 6148 -> 0 bytes .../com/altinity/ice/cli/internal/.DS_Store | Bin 6148 -> 0 bytes .../altinity/ice/cli/internal/iceberg/.DS_Store | Bin 8196 -> 0 bytes .../cli/internal/iceberg/parquet/22sas.parquet | Bin 1005 -> 0 bytes .../iceberg/parquet/int64-schema.parquet | Bin 1022 -> 0 bytes 12 files changed, 1 insertion(+) delete mode 100644 ice/src/.DS_Store delete mode 100644 ice/src/test/.DS_Store delete mode 100644 ice/src/test/resources/.DS_Store delete mode 100644 ice/src/test/resources/com/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/ice/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/ice/cli/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store delete mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet delete mode 100644 ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/int64-schema.parquet diff --git a/.gitignore b/.gitignore index 4ae9503a..1c72e437 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ target .devbox /.envrc *.credentials +.DS_Store diff --git a/ice/src/.DS_Store b/ice/src/.DS_Store deleted file mode 100644 index 33df6e8374a6e29af68e86dd8509763278e09280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<-XrW7Fu6^{#E3#LV|;w8lT0!H+pQWFw17_+5G?V%KM)EDwmd>&_Z zH)1ho5jz9B-~8@oKgj+t#<)L=`;0k^F&i2pN2Ni~-5A<1$%q`sh~~v4%47ugyNUgE zz;Cx$$r4tu^85EklPoPt*ZtrdEo*bDZMW^NeHT2+c~FMstnkC>4O*8{W>Kw&(N&tv z$Ii}~%*!y%lc_35;{;M}uhTr1b6?K#xKOo$4%i*LGj{eCi-Fq{?y@Hq{iBmXPYj30 z%Vo#jJvcnQ7(ZptxqQ`ha$sA@w!s?SK>1qDOEAqdnLmK9&ad+bi2-7O7$64LnE`Vu z*xhv|f!0n85Ce@2;Qk<>A$kTYjcV(F4zJG`w-8Z4$F~HcFz6YqG(rS~>ry~n%FPpl z>vHf5ljj+%H0pB3)yy!CnYn(va5X#lg-U1K(?~rrKn$!h(9))Z=l?nUGL4V?)e^FZ z0b<~vF~F@+F!Eth=4}13JUnX!w0meMm{*|!0{Y4&01Vtm_Ek{F1?rIJ8LTwoDCk$^ PfOHX1giuEe`~m}?+9OI0 diff --git a/ice/src/test/.DS_Store b/ice/src/test/.DS_Store deleted file mode 100644 index 124cacc8bd4088ceab32c0863768584f159bcd9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5T0$TO(;SSDjpZS7Ho@P#Y?F51&ruHr6#s$G-jpg&!H4@)EDwmd>&_Z zH^tg|6)7_?`_0bIB+Qqvy8{5CJ?b?8ssP}i5*Az>RtT+=E=j?9N{E7<5l+(AFjgVX zKbE4|@gEtWZ&!jR2w)7s_wN_J#!)(~*FQy}SlZYuJ7uTh-1?7d;tzx2C~XIWYnojs z6^FSUgqKl&(yeZvs$>{MNq?XdqFx_EZmy!FrzUMRN_wfz_059gI&QbRJDoP`HCdn4 zu5G}ot^!Ilk@I#{F10QL!rRGP0N9Y(IOrAt zk*<+i(57C3a->DiVrCFmP=rZEG^xV27{a8ZU)ng&VrI~!gRsqqux}Q&LlOGz_y+b9TxXj=@ k1r2=^V=NuTd#GB_FUdgkEM^ALgTfa9O#=_iz@IYk1(PF*zyJUM diff --git a/ice/src/test/resources/.DS_Store b/ice/src/test/resources/.DS_Store deleted file mode 100644 index d44deb0915460c4fe3c42cda413adf9ff6f5bde5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK-AcnS6i&A3GKSC#6)ywc4(x{D#G5kb3s}($mD$>%#jY7^XD`N}m-<3JiqGRY zNeT{kE#l6Bo7)#HWh*}*S$I^&)}>WKkjV3mQoF&#YrFW{G1`^aA{A&VFw z2L2fXyfO5L16Y(jTYoGM&squX0U8SCm8gJ#zH$iw1NV^w9W-%?I^=m4OM^HH`gJ)V OT?8~C)DZ)}z`z&E6-fdB diff --git a/ice/src/test/resources/com/.DS_Store b/ice/src/test/resources/com/.DS_Store deleted file mode 100644 index bd6ab25bb9332b2c60af6ff32ca2bc5ddf2cfcc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z<-bZYe?!DjpZS7EFs^#Y>3w1&ruHr6#0kFlI}e8l)6*)EDwmd>&_Z zH(+TFodd`@@MVwSPjFrSVq z2KtL8T)SWaOJLnG`?mftQ6cy~!f_H$GspSl8@2l8RzoyIOWgU7D)+M>n@zo7a)Z4~ zrIN7JgYYUI<-_*QnM$)DPDc}+5Jw{jxxJ3lNadcIrO{O9`ocyX=iAo>9SLT)Rgv0%@RP1w?C|il$nL0b<}s4B-ACp&_~!3xj&=fDc}u(O*YI0Uh5Gh|;2Ku`mc8 z5N=WdO)9rf3~tiFE^VA^u`p=T8P_wzICkdp@xt}&V3#_aan~Syi2-6@nSq+=w(_wk`^dg_8oxvx Z;#`Y`K^z6`IvtQM0-6x|5Cgx!z!$|_OyB?j diff --git a/ice/src/test/resources/com/altinity/.DS_Store b/ice/src/test/resources/com/altinity/.DS_Store deleted file mode 100644 index 32e9169c28a49a2785331dda3a3d54a60b1e743e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-O8O({YSDjpZS7EFs^#Y>3w1&ruHr6wk5FlI}WnnNk%s4wKB_&m<+ zZotx>MeGdhe)GGV{UH0p7~|e7>N93D#w=)v9F;YK?zN$YNk-&2Mm`Bs8G`j0PE72t z1AcpxCG3&KVfpj>(m)A6 z_U^gNiXh42sVYdK7*g(Tk}Q&?Cudodt6E5RJ?sV4@Afn^4o+O+Zfzkpw6?IVA=ge+o! z82D!l@Ycv5d9WyRwyrD>&sqWP0U8SCRj7b~zH|uy1NV^w71VKoI^?+qD~&h``c*j~ OT?7;%)DZ)}z`!?B`$*;h diff --git a/ice/src/test/resources/com/altinity/ice/.DS_Store b/ice/src/test/resources/com/altinity/ice/.DS_Store deleted file mode 100644 index fbb7feebc094c32ecefae1af70188ceb2c17f718..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK-AcnS6i&A3GKSC#6)ywc4(x{D#G5kb3s}($mD$>%#oCOuvlnB~OMM|9#pm&y zBn8KIE#l6B{{OZX_~0?2|QJHl|@Jl5Cg;jF|g?j*porD zH=PJtKQTZItT2H4gM^0YSu73etphr|K4ZLrhypskB@m@W&thp1A|Tw90-928pBUVf zgJ0S_&thrNlryephH>o7)#HWh*}*S$I^&)}>WKkjV3~osF&#YrFW{G1`^aA|A&VFw z2L2fXyfO5L16Y(jTUVBcXRUo5VU%CWWG0~VBi~$d`R>F diff --git a/ice/src/test/resources/com/altinity/ice/cli/.DS_Store b/ice/src/test/resources/com/altinity/ice/cli/.DS_Store deleted file mode 100644 index 4961c0f6bc765800e5c2450579f2c5c1d2d94fdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5Z-O8-BN@cR6H(tEtnR;ikDF93mDOZN=<0dV9b^#HHT8jQD4YM@p+ut z-GHSzcoMNQu=!@^XLsj=> zQgK-7L3kZa@{zN9u97T>lF3XbMB@pB+}%XUSmgsXPsXXv^^HTcL~G>iFBUzwBi&_3 zF1p93y^ienPnOG;*gHHryBs~oFNu0HRB~Wl%Z|ko-a%Qb>eZhmu}U7nSLT)Rgv0S5Z-O8O({YSDjpZS7EFs^#Y?F51&ruHr6wlSV9b`ZHHT8jQD4YM@p+ut z-3ZlyHxWAnv)}B_%x>m`>uHD8vRWg1cd_U>9pNlH zV$nT3?sY`Jf3#e-teyRXlk?GI@|4OKO(X}-m24R-;T4Q8H9dP-n#gnvo-(V9CL{)k z0b+m{ST_dDNno|tt#GQB7$63IWB~UE0gC7vEHtXE0~)+OqrZWO0ye%S5QRb4V4)E_ zAY7*c>Qru?7+j~rxG-_9!9t@>XI!le^O%*(#|u}h!?;l4jJq1CB?gFrRR-$1YvcKU z2ER<@BY!o8dc*)R@Xr|FjiEOjKvCvw{Z<~HwF2}G6b0i7G(f;!xdcE5_mMs2)P8|B Z#JL6wjW`RAt8_rR2q;3RAqIYdfe$AROY8su diff --git a/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store b/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/.DS_Store deleted file mode 100644 index 82ecff47e17170e41ca3ff370472eb63bfec443e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHMTWl0n82u@F6llA%T(YtT5LRs~tw19z?H0=|#cuDQ>+H@zCroGBo!MQa zsWvgj#0y@ckD3@0AB+-sFd-TrOuXQW8YD!cCPsNOQC>9aoBugymP-o{B*sgalbrLP z|28xKKi_}Oo>>6Eu9Ddb5CZ^}I;Ywq8m`f}p7(i82_>~ek^BKlU_p?t_>*~Oo^>RM zG7x1T%0QHXC<9Rj{tFqPJ)1Z6I{UuVMq`wLC<8ZT2Kf4rpw4MJq_dKWrGo}>1R%H&H=(F5z=%>XC)P`bWM4Bz|a-LBL+%$(kHk%(R4^>C6(@g(j73oGlnM=6n7`T zgfIt8OB#()2BHki&j2rE$v&kXL|SUKUaV260LzPV`G#TH?R-cR&mtu3zloz?%~0TZ3g4R zW!ty&jy2#K6BcVwzGLT_nq&2PTwhsLNyE#Is+LqoN_l&#WCxFkd#u(I?4U^xzt1!I zT})MbhY3wmPv{4@rn_j-XsW6ZuhZ{f13m?!YKAmSvAfv75qhCa^QEMf-J=gWM&5Fm zW=gjXwpkx8htX<#q_C6Sr;il8i3tkPXAPK=; z8%3+HLYN94Y8OexJ0dxE>M`xW<4Tc`gx;sBqx^z9Ow%&Y)i=kQ9_ZJ}L$lqoO&F$E zAfc?CRaG^a-XNhQGMh}dNN)KYeDU2%hZJmsoiGLkaG?Uvz_V~1UV%5@6ubu?z^CvT zd=6*fOZXNpz)$ci{06_nABcDhHe(FqxB_p-7Hq{f?8G$gz;4XoKJ3RV4&o5z(85DF zjy4wY7*691K8jD`^Y{Y3gfHW(_%@!vlXwc>#gFh~`~<(iAMi)KfIs6ecoF|p6s1vV zR$_{-#FeD7UZJmjyeZY18IycRaro$QwsKXqo-S9CtgJyoy>(RO z(ADZf>)Y0-gnDg3$gW*S>>h2QWaArCDpi=K2$scLS{c=mRui%t+lfWVuq|5|Rg_j6 zvfH*ZUgR1GJ|6GR(3Q?;e*;`!gE!$MoQ4kxuIJ$!_#Q42M1dfxVUvLA3S5P2aUHJ5 z4Vc1q?7(|*3jsERJ-8ElaW}zrfB-v;qnO76ngm)8CvggWED>ZM!&!VBpTOhz9D(=6 z5WKJBTM~Ge;JCXAL`m`e`EV>}i>~9jhe=Zf@zqWdcS9Mdk=8MO{_nZ|_x~HZW@H>? zAj-i1D+5@Y$!7TWf4x;zAzgy{!_;}>cC(TS7aF(;my6>#(Mx|A(mWCB(jlFdlr+@- V@ecvf{(r^K)oA}0AiN2OzW_bm9#sGU diff --git a/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet b/ice/src/test/resources/com/altinity/ice/cli/internal/iceberg/parquet/22sas.parquet deleted file mode 100644 index fcbc43b89c86eea527efa17c831d1ae252e345ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmb7DPiqrF6rb5FLn;ANafVq~N|1J`n8p~a6xkl$rfDsv+N=j9x6Qi5Vw1*gH0USr z;K7qe@#N97pF=#0M?Z$|&FApD%S40cUkD_}40P*)MD0jc(jj9o+Mo6_X7qbm{^$*! zB)Cr76a_OXH6|GV&v6B>`%l8t!8n`@TDQ^P>*Ra@kEn*gderX$Kn!~nLGlZb-l1W= zNAZiRqe=HYI3)tS-;B;7j=nIPydKBRF(sjR_)!sv~Tg@hRZ*Kb2=66B0j z3xpS>BOTv!v&uM9F#i{HdYU>+6$N==Sppt2%s$DGRXjI~m?4YD=)V|jVi?46`|%9# zVBTijGk&s*uC0LQ3|gP#ZbLeB@Hyd$qjnlhCGjxs4UbNGAoEnPdyQ^92Q{C_l+eB| z2jELvuYgm~yiE!v)K5!YTfu7J{-1z)fm8!Y;sNO|p#0L&0kEVGNybNdz;$Z{Hx{u? z%J!s~&$H$4Mlu5%qAN>%wSr%{;9Jh0&~&1ia&>lib(>QnaMgDkwD09HiuOOQrFwfm z#A~)!$W}KVaTjrfVFx!6J6P!$Gz<~LPHeu|Epy{O+Ty`_AkddG+O zf!A=eI-hq7v4tCq5cz$R`i^1UX8eA13VGhGVaM!cVvq#_VT9og2`!7KI~$>~`< nTx|9Gi;W~X85PgtWI%VdSSl?oFD>gbUDNb|-*k-*=+FNHmXW3z From 7a18152be3e1c25264602ca3d812338b3b19f858 Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Tue, 17 Mar 2026 13:32:05 -0400 Subject: [PATCH 3/5] Changed list-namespace to list-namespaces --- .../test/resources/scenarios/basic-operations/run.sh.tmpl | 8 ++++---- .../resources/scenarios/basic-operations/verify.sh.tmpl | 2 +- ice/src/main/java/com/altinity/ice/cli/Main.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl index 74d2df04..b71713b3 100644 --- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl +++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl @@ -17,14 +17,14 @@ INPUT_PATH="${SCENARIO_DIR}/${INPUT_FILE}" {{ICE_CLI}} --config {{CLI_CONFIG}} create-namespace ${NAMESPACE_NAME} echo "OK Created namespace: ${NAMESPACE_NAME}" -# List namespaces via list-namespace command (top-level) -{{ICE_CLI}} --config {{CLI_CONFIG}} list-namespace > /tmp/basic_ops_list_namespace.txt +# List namespaces via list-namespaces command (top-level) +{{ICE_CLI}} --config {{CLI_CONFIG}} list-namespaces > /tmp/basic_ops_list_namespace.txt if ! grep -q "${NAMESPACE_NAME}" /tmp/basic_ops_list_namespace.txt; then - echo "FAIL: list-namespace output missing namespace ${NAMESPACE_NAME}" + echo "FAIL: list-namespaces output missing namespace ${NAMESPACE_NAME}" cat /tmp/basic_ops_list_namespace.txt exit 1 fi -echo "OK list-namespace listed ${NAMESPACE_NAME}" +echo "OK list-namespaces listed ${NAMESPACE_NAME}" # List namespaces (ice describe) - no output when no tables yet {{ICE_CLI}} --config {{CLI_CONFIG}} describe diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl index e5be24ed..6b2555f1 100644 --- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl +++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/verify.sh.tmpl @@ -66,7 +66,7 @@ if ! grep -qE "s3a://test-bucket/warehouse/test_ns/.*/data/.*\.parquet" "$F"; th echo "FAIL $F does not contain expected datafile path pattern" exit 1 fi -# Verify list-namespace output contains the test namespace +# Verify list-namespaces output contains the test namespace if ! grep -q "test_ns" /tmp/basic_ops_list_namespace.txt; then echo "FAIL basic_ops_list_namespace.txt does not contain expected namespace 'test_ns'" exit 1 diff --git a/ice/src/main/java/com/altinity/ice/cli/Main.java b/ice/src/main/java/com/altinity/ice/cli/Main.java index c9250795..eedfdaf0 100644 --- a/ice/src/main/java/com/altinity/ice/cli/Main.java +++ b/ice/src/main/java/com/altinity/ice/cli/Main.java @@ -709,7 +709,7 @@ void deleteNamespace( } } - @CommandLine.Command(name = "list-namespace", description = "List namespaces.") + @CommandLine.Command(name = "list-namespaces", description = "List namespaces.") void listNamespace( @CommandLine.Parameters( arity = "0..1", From 8a5b0982b1e953a65170626ef8072fee5419a2ca Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Wed, 18 Mar 2026 14:09:49 -0400 Subject: [PATCH 4/5] Renamed ListNamespace to ListNamespaces --- ice/src/main/java/com/altinity/ice/cli/Main.java | 4 ++-- .../internal/cmd/{ListNamespace.java => ListNamespaces.java} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename ice/src/main/java/com/altinity/ice/cli/internal/cmd/{ListNamespace.java => ListNamespaces.java} (96%) diff --git a/ice/src/main/java/com/altinity/ice/cli/Main.java b/ice/src/main/java/com/altinity/ice/cli/Main.java index eedfdaf0..22b8ff51 100644 --- a/ice/src/main/java/com/altinity/ice/cli/Main.java +++ b/ice/src/main/java/com/altinity/ice/cli/Main.java @@ -22,7 +22,7 @@ import com.altinity.ice.cli.internal.cmd.Files; import com.altinity.ice.cli.internal.cmd.Insert; import com.altinity.ice.cli.internal.cmd.InsertWatch; -import com.altinity.ice.cli.internal.cmd.ListNamespace; +import com.altinity.ice.cli.internal.cmd.ListNamespaces; import com.altinity.ice.cli.internal.cmd.ListPartitions; import com.altinity.ice.cli.internal.cmd.Scan; import com.altinity.ice.cli.internal.config.Config; @@ -727,7 +727,7 @@ void listNamespace( (parent == null || parent.isEmpty()) ? Namespace.empty() : Namespace.of(parent.split("[.]")); - ListNamespace.run(catalog, namespace, json); + ListNamespaces.run(catalog, namespace, json); } } diff --git a/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java b/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespaces.java similarity index 96% rename from ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java rename to ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespaces.java index a8f56c7b..d3e8ad09 100644 --- a/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespace.java +++ b/ice/src/main/java/com/altinity/ice/cli/internal/cmd/ListNamespaces.java @@ -19,9 +19,9 @@ import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.rest.RESTCatalog; -public final class ListNamespace { +public final class ListNamespaces { - private ListNamespace() {} + private ListNamespaces() {} public static void run(RESTCatalog catalog, Namespace parent, boolean json) throws IOException { List namespaces = catalog.listNamespaces(parent); From 1bd5b3372e0dbff47deb0ae9048d48b064f8023c Mon Sep 17 00:00:00 2001 From: kanthi subramanian Date: Wed, 18 Mar 2026 14:12:10 -0400 Subject: [PATCH 5/5] Renamed function to listNamespaces --- ice/src/main/java/com/altinity/ice/cli/Main.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ice/src/main/java/com/altinity/ice/cli/Main.java b/ice/src/main/java/com/altinity/ice/cli/Main.java index 22b8ff51..b8a8b307 100644 --- a/ice/src/main/java/com/altinity/ice/cli/Main.java +++ b/ice/src/main/java/com/altinity/ice/cli/Main.java @@ -710,7 +710,7 @@ void deleteNamespace( } @CommandLine.Command(name = "list-namespaces", description = "List namespaces.") - void listNamespace( + void listNamespaces( @CommandLine.Parameters( arity = "0..1", paramLabel = "",