diff --git a/.bin/agent-ice b/.bin/agent-ice
new file mode 100755
index 00000000..e8d44971
--- /dev/null
+++ b/.bin/agent-ice
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+set -euo pipefail
+SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
+PROJECT_ROOT=$(cd -- "$SCRIPT_DIR/.." && pwd)
+
+shopt -s nullglob
+jars=("$PROJECT_ROOT"/ice/target/ice-*-shaded.jar)
+shopt -u nullglob
+if (( ${#jars[@]} == 0 )); then
+ echo "agent-ice: no ice-*-shaded.jar in $PROJECT_ROOT/ice/target/." >&2
+ exit 1
+fi
+jar=$(ls -t "${jars[@]}" | head -n1)
+
+exec "${JAVA_HOME:?JAVA_HOME not set — run inside direnv shell}/bin/java" \
+-agentlib:native-image-agent=config-merge-dir=$PROJECT_ROOT/ice/src/main/resources/META-INF/native-image/com.altinity/ice,experimental-class-loader-support \
+-jar "$jar" "$@"
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
index 053511ae..ce998778 100644
--- a/.github/workflows/verify.yaml
+++ b/.github/workflows/verify.yaml
@@ -17,7 +17,6 @@ jobs:
- run: ./mvnw clean verify
- name: Install
run: ./mvnw install
- # TODO: check native-image can build ice
- name: Run Scenario-Based Integration Tests
run: ../mvnw test -Dtest=ScenarioBasedIT
working-directory: ice-rest-catalog
@@ -57,3 +56,33 @@ jobs:
./mvnw -pl ice-rest-catalog failsafe:integration-test failsafe:verify
-Dit.test=DockerScenarioBasedIT
-Ddocker.image=altinity/ice-rest-catalog:debug-with-ice-latest-master-amd64
+ native-build:
+ name: Build and test native image (${{ matrix.arch }})
+ runs-on: ${{ matrix.runner }}
+ strategy:
+ matrix:
+ include:
+ - arch: amd64
+ runner: ubuntu-24.04
+ artifact: ice-native-amd64-dynamic
+ - arch: arm64
+ runner: ubuntu-24.04-arm
+ artifact: ice-native-arm64-dynamic
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v4
+ with:
+ java-version: '21'
+ distribution: 'graalvm'
+ cache: maven
+ - name: Build native image (dynamic linking - no musl required)
+ run: ./mvnw -Pnative -pl ice clean install -Dmaven.test.skip=true
+ - name: Run Scenario-Based Integration Tests
+ run: ../mvnw test -Dtest=ScenarioBasedIT -Dice.native=true
+ working-directory: ice-rest-catalog
+ - name: Upload native binary as artifact
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ matrix.artifact }}
+ path: ice/target/ice
+ if-no-files-found: error
diff --git a/README.md b/README.md
index f308e5fc..05b1860e 100644
--- a/README.md
+++ b/README.md
@@ -10,8 +10,14 @@ Create/delete tables, insert data with `ice insert -p ns1.table1 file://example.
## Installation
-Pre-built binaries\* (+ links to Docker images for [ice](https://hub.docker.com/r/altinity/ice) and [ice-rest-catalog](https://hub.docker.com/r/altinity/ice-rest-catalog)) are available from [GitHub Releases](https://github.com/Altinity/ice/releases) page.
-> \* currently require `java` 21+ to run (available [here](https://adoptium.net/installation/)).
+Pre-built binaries (+ links to Docker images for [ice](https://hub.docker.com/r/altinity/ice) and [ice-rest-catalog](https://hub.docker.com/r/altinity/ice-rest-catalog)) are available from [GitHub Releases](https://github.com/Altinity/ice/releases) page.
+
+**Two types of binaries are available:**
+
+1. **Java-based binaries** - Require Java 21+ to run (available [here](https://adoptium.net/installation/))
+2. **Native binaries** - Standalone executables with no Java dependency
+ - `ice-native-amd64` - Dynamic binary for x86_64 Linux (requires glibc)
+ - `ice-native-arm64` - Dynamic binary for ARM64 Linux (requires glibc)
## Usage
@@ -19,6 +25,8 @@ See [examples/](examples/).
## Development
+### Standard Build (Java-based)
+
Install [sdkman](https://sdkman.io/install), then
```shell
@@ -35,6 +43,23 @@ sdk env
./mvnw
```
+### Native Image Build (Standalone)
+
+Build standalone native binaries with no Java dependency:
+
+```shell
+# Install prerequisites
+sdk env # or ensure Java 21+ and GraalVM are available
+
+# Build ice binary (both amd64 and arm64)
+mvn -Pnative -pl ice clean package -Dmaven.test.skip=true
+
+# Docker builds
+docker build -f ice/Dockerfile.native -t ice-native:amd64 .
+
+docker build -f ice/Dockerfile.native -t ice-native:arm64 .
+```
+
## License
Copyright (c) 2025, Altinity Inc and/or its affiliates. All rights reserved.
diff --git a/ice-rest-catalog/pom.xml b/ice-rest-catalog/pom.xml
index 38053fdb..f861254e 100644
--- a/ice-rest-catalog/pom.xml
+++ b/ice-rest-catalog/pom.xml
@@ -17,6 +17,7 @@
0.8.5
1.70.0
1.21.4
+ false
@@ -562,6 +563,9 @@
org.apache.maven.plugins
maven-failsafe-plugin
+
+ ${ice.native}
+
**/DockerScenarioBasedIT.java
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
index 24b098e7..c54a692d 100644
--- a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
@@ -23,6 +23,8 @@
*/
public class ScenarioBasedIT extends RESTCatalogTestBase {
+ private static final boolean USE_NATIVE = Boolean.getBoolean("ice.native");
+
@Override
protected ScenarioTestRunner createScenarioRunner(String scenarioName) throws Exception {
Path scenariosDir = getScenariosDirectory();
@@ -38,18 +40,24 @@ protected ScenarioTestRunner createScenarioRunner(String scenarioName) throws Ex
// Try to find ice-jar in the build
String projectRoot = Paths.get("").toAbsolutePath().getParent().toString();
- String iceJar = projectRoot + "/ice/target/ice-jar";
+ String iceJar =
+ USE_NATIVE ? projectRoot + "/ice/target/ice" : projectRoot + "/ice/target/ice-jar";
File iceJarFile = new File(iceJar);
- if (iceJarFile.exists() && iceJarFile.canExecute()) {
- // Use pre-built ice-jar if available
- templateVars.put("ICE_CLI", iceJar);
- logger.info("Using ice-jar from: {}", iceJar);
+ String override = System.getenv("ICE_CLI_OVERRIDE");
+ if (override != null) {
+ templateVars.put("ICE_CLI", override);
} else {
- // Fall back to using local-ice wrapper script
- String localIce = projectRoot + "/.bin/local-ice";
- templateVars.put("ICE_CLI", localIce);
- logger.info("Using local-ice script from: {}", localIce);
+ if (iceJarFile.exists() && iceJarFile.canExecute()) {
+ // Use pre-built ice-jar if available
+ templateVars.put("ICE_CLI", iceJar);
+ logger.info("Using ice-jar from: {}", iceJar);
+ } else {
+ // Fall back to using local-ice wrapper script
+ String localIce = projectRoot + "/.bin/local-ice";
+ templateVars.put("ICE_CLI", localIce);
+ logger.info("Using local-ice script from: {}", localIce);
+ }
}
return new ScenarioTestRunner(scenariosDir, templateVars);
diff --git a/ice/Dockerfile.native b/ice/Dockerfile.native
new file mode 100644
index 00000000..10961656
--- /dev/null
+++ b/ice/Dockerfile.native
@@ -0,0 +1,33 @@
+# Dockerfile for building ICE native image (mostly-static with dynamic libc)
+# Usage (amd64): docker build -f ice/Dockerfile.native -t ice-native:amd64 .
+# Usage (arm64): docker build -f ice/Dockerfile.native -t ice-native:arm64 .
+
+FROM ghcr.io/graalvm/native-image-community:21 AS builder
+
+WORKDIR /workspace
+
+# Copy license header file (required by license-maven-plugin)
+COPY apache-header.txt .
+
+# Copy Maven files for dependency resolution
+COPY mvnw .
+COPY .mvn .mvn
+COPY pom.xml .
+COPY ice/pom.xml ice/
+COPY ice-rest-catalog/pom.xml ice-rest-catalog/
+
+# Download dependencies (cached layer)
+RUN ./mvnw dependency:go-offline -pl ice || true
+
+# Copy source code
+COPY ice/src ice/src
+
+# Build mostly-static native image (everything statically linked except libc)
+RUN ./mvnw -Pnative -pl ice clean package -Dmaven.test.skip=true
+
+# ============================================================================
+# Final stage: distroless base (includes minimal glibc runtime)
+# ============================================================================
+FROM gcr.io/distroless/base-debian12:nonroot
+COPY --from=builder /workspace/ice/target/ice /ice
+ENTRYPOINT ["/ice"]
diff --git a/ice/pom.xml b/ice/pom.xml
index b200694b..61c5d41f 100644
--- a/ice/pom.xml
+++ b/ice/pom.xml
@@ -667,5 +667,41 @@
+
+ native
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native.maven.plugin.version}
+ true
+
+
+ build-native
+
+ compile-no-fork
+
+ package
+
+
+
+ ice
+ com.altinity.ice.cli.Main
+
+
+ --initialize-at-run-time=io.netty
+ --initialize-at-run-time=ch.qos.logback
+
+ -H:+StaticExecutableWithDynamicLibC
+
+ -H:+RemoveUnusedSymbols
+ -H:+ReportExceptionStackTraces
+
+
+
+
+
+
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/jni-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/jni-config.json
new file mode 100644
index 00000000..c681d3ef
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/jni-config.json
@@ -0,0 +1,30 @@
+[
+{
+ "name":"com.github.luben.zstd.ZstdInputStreamNoFinalizer",
+ "fields":[{"name":"dstPos"}, {"name":"srcPos"}]
+},
+{
+ "name":"com.github.luben.zstd.ZstdOutputStreamNoFinalizer",
+ "fields":[{"name":"dstPos"}, {"name":"srcPos"}]
+},
+{
+ "name":"java.lang.Boolean",
+ "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"org.jline.nativ.CLibrary",
+ "fields":[{"name":"TCSADRAIN"}, {"name":"TCSAFLUSH"}, {"name":"TCSANOW"}, {"name":"TIOCGWINSZ"}, {"name":"TIOCSWINSZ"}]
+},
+{
+ "name":"org.jline.nativ.CLibrary$Termios",
+ "fields":[{"name":"SIZEOF"}, {"name":"c_cc"}, {"name":"c_cflag"}, {"name":"c_iflag"}, {"name":"c_ispeed"}, {"name":"c_lflag"}, {"name":"c_oflag"}, {"name":"c_ospeed"}]
+},
+{
+ "name":"org.jline.nativ.CLibrary$WinSize",
+ "fields":[{"name":"SIZEOF"}, {"name":"ws_col"}, {"name":"ws_row"}, {"name":"ws_xpixel"}, {"name":"ws_ypixel"}]
+},
+{
+ "name":"sun.management.VMManagementImpl",
+ "fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}]
+}
+]
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/predefined-classes-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/predefined-classes-config.json
new file mode 100644
index 00000000..0e79b2c5
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/predefined-classes-config.json
@@ -0,0 +1,8 @@
+[
+ {
+ "type":"agent-extracted",
+ "classes":[
+ ]
+ }
+]
+
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/proxy-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/proxy-config.json
new file mode 100644
index 00000000..4a9716c1
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/proxy-config.json
@@ -0,0 +1,5 @@
+[
+ {
+ "interfaces":["sun.misc.SignalHandler"]
+ }
+]
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/reflect-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/reflect-config.json
new file mode 100644
index 00000000..7b350ca9
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/reflect-config.json
@@ -0,0 +1,980 @@
+[
+{
+ "name":"[B"
+},
+{
+ "name":"[Lcom.altinity.ice.cli.Main$IcePartition;"
+},
+{
+ "name":"[Lcom.altinity.ice.cli.Main$IceSortOrder;"
+},
+{
+ "name":"[Lcom.altinity.ice.cli.Main$PartitionFilter;"
+},
+{
+ "name":"[Lcom.altinity.ice.cli.internal.cmd.AlterTable$Update;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.deser.BeanDeserializerModifier;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.deser.Deserializers;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.deser.KeyDeserializers;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.deser.ValueInstantiators;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.ser.BeanSerializerModifier;"
+},
+{
+ "name":"[Lcom.fasterxml.jackson.databind.ser.Serializers;"
+},
+{
+ "name":"[Ljava.lang.String;"
+},
+{
+ "name":"[Ljava.util.List;"
+},
+{
+ "name":"[Ljava.util.Map$Entry;"
+},
+{
+ "name":"[Lorg.apache.avro.util.springframework.ConcurrentReferenceHashMap$Segment;"
+},
+{
+ "name":"[Lorg.apache.iceberg.Accessor;"
+},
+{
+ "name":"[Lorg.apache.iceberg.avro.ValueWriter;"
+},
+{
+ "name":"[Lorg.apache.iceberg.parquet.ParquetValueReader;"
+},
+{
+ "name":"[Lorg.apache.iceberg.parquet.ParquetValueWriter;"
+},
+{
+ "name":"[Lorg.apache.iceberg.parquet.TripleIterator;"
+},
+{
+ "name":"[Lorg.apache.iceberg.relocated.com.google.common.collect.ImmutableMapEntry;"
+},
+{
+ "name":"[Lsun.security.pkcs.SignerInfo;"
+},
+{
+ "name":"ch.qos.logback.classic.joran.SerializedModelConfigurator",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"ch.qos.logback.classic.util.DefaultJoranConfigurator",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"ch.qos.logback.core.ConsoleAppender",
+ "queryAllPublicMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"setTarget","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"ch.qos.logback.core.Layout",
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"ch.qos.logback.core.OutputStreamAppender",
+ "methods":[{"name":"setEncoder","parameterTypes":["ch.qos.logback.core.encoder.Encoder"] }]
+},
+{
+ "name":"ch.qos.logback.core.encoder.Encoder",
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"ch.qos.logback.core.encoder.LayoutWrappingEncoder",
+ "queryAllPublicMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"setLayout","parameterTypes":["ch.qos.logback.core.Layout"] }, {"name":"setParent","parameterTypes":["ch.qos.logback.core.spi.ContextAware"] }]
+},
+{
+ "name":"ch.qos.logback.core.pattern.PatternLayoutBase",
+ "methods":[{"name":"setPattern","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"ch.qos.logback.core.spi.ContextAware",
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"com.altinity.ice.cli.Main",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "methods":[{"name":"alterTable","parameterTypes":["java.lang.String","java.lang.String"] }, {"name":"check","parameterTypes":[] }, {"name":"createNamespace","parameterTypes":["java.lang.String","boolean"] }, {"name":"createTable","parameterTypes":["java.lang.String","java.lang.String","boolean","boolean","java.lang.String","boolean","java.lang.String","java.lang.String","java.lang.String"] }, {"name":"delete","parameterTypes":["java.lang.String","java.lang.String","java.lang.Boolean"] }, {"name":"deleteNamespace","parameterTypes":["java.lang.String","boolean"] }, {"name":"deleteTable","parameterTypes":["java.lang.String","boolean","boolean"] }, {"name":"describe","parameterTypes":["java.lang.String","boolean","boolean","boolean","boolean","boolean"] }, {"name":"files","parameterTypes":["java.lang.String"] }, {"name":"insert","parameterTypes":["java.lang.String","boolean","java.lang.String[]","java.lang.String","boolean","boolean","boolean","java.lang.String","boolean","boolean","int","boolean","com.altinity.ice.cli.internal.cmd.Insert$DataFileNamingStrategy$Name","boolean","boolean","java.lang.String","int","java.lang.String","java.lang.String","boolean","int","java.lang.String","java.lang.String","java.lang.String","boolean","java.lang.String"] }, {"name":"listNamespaces","parameterTypes":["java.lang.String","boolean"] }, {"name":"listPartitions","parameterTypes":["java.lang.String","boolean"] }, {"name":"scanTable","parameterTypes":["java.lang.String","int","boolean"] }, {"name":"shell","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.Main$IcePartition",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String"] }]
+},
+{
+ "name":"com.altinity.ice.cli.Main$IceSortOrder",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":["java.lang.String","boolean","boolean"] }]
+},
+{
+ "name":"com.altinity.ice.cli.Main$PartitionFilter",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":["java.lang.String","java.util.List"] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.AlterTable$AddColumn",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String"] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.AlterTable$Update",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.Describe$Table",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"data","parameterTypes":[] }, {"name":"error","parameterTypes":[] }, {"name":"kind","parameterTypes":[] }, {"name":"metadata","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.Describe$Table$Data",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"currentSnapshot","parameterTypes":[] }, {"name":"location","parameterTypes":[] }, {"name":"metrics","parameterTypes":[] }, {"name":"partitionSpecRaw","parameterTypes":[] }, {"name":"properties","parameterTypes":[] }, {"name":"schemaRaw","parameterTypes":[] }, {"name":"sortOrderRaw","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.Describe$Table$Error",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.Describe$Table$Metadata",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"id","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.Describe$Table$Snapshot",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"id","parameterTypes":[] }, {"name":"location","parameterTypes":[] }, {"name":"operation","parameterTypes":[] }, {"name":"parentID","parameterTypes":[] }, {"name":"sequenceNumber","parameterTypes":[] }, {"name":"summary","parameterTypes":[] }, {"name":"timestamp","parameterTypes":[] }, {"name":"timestampISO","parameterTypes":[] }, {"name":"timestampISOLocal","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.ListNamespaces$Result",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"namespaces","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.ListPartitions$PartitionFieldInfo",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"name","parameterTypes":[] }, {"name":"sourceColumn","parameterTypes":[] }, {"name":"transform","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.cmd.ListPartitions$Result",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"partitionSpec","parameterTypes":[] }, {"name":"partitions","parameterTypes":[] }, {"name":"table","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.config.Config",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.Boolean","java.lang.String","java.lang.String","java.lang.String","java.lang.String[]","com.altinity.ice.cli.internal.config.Config$S3","java.util.Map"] }]
+},
+{
+ "name":"com.altinity.ice.cli.internal.config.Config$S3",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"com.altinity.ice.internal.iceberg.io.SchemeFileIO",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.internal.logback.ColorAwarePatternLayout",
+ "queryAllPublicMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.internal.logback.ColorAwarePatternLayout$NoColorConverter",
+ "queryAllPublicMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.altinity.ice.internal.picocli.VersionProvider",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BBHeader$ReadAndWriteCounterRef",
+ "fields":[{"name":"writeCounter"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BBHeader$ReadCounterRef",
+ "fields":[{"name":"readCounter"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef",
+ "fields":[{"name":"drainStatus"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueColdProducerFields",
+ "fields":[{"name":"producerLimit"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueConsumerFields",
+ "fields":[{"name":"consumerIndex"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueueProducerFields",
+ "fields":[{"name":"producerIndex"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.BoundedLocalCache",
+ "fields":[{"name":"refreshes"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.CacheLoader",
+ "methods":[{"name":"loadAll","parameterTypes":["java.util.Set"] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.FD",
+ "fields":[{"name":"value"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.FDMS",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.FS",
+ "fields":[{"name":"key"}, {"name":"value"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.PS",
+ "fields":[{"name":"key"}, {"name":"value"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.PSA",
+ "fields":[{"name":"accessTime"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.PW",
+ "fields":[{"name":"value"}],
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.SI",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.SSA",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.SSLA",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.StripedBuffer",
+ "fields":[{"name":"tableBusy"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.UnboundedLocalCache",
+ "fields":[{"name":"refreshes"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.WILSMS",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.WS",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.github.benmanes.caffeine.cache.WSL",
+ "fields":[{"name":"FACTORY"}]
+},
+{
+ "name":"com.sun.crypto.provider.AESCipher$General",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.ARCFOURCipher",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.DESCipher",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.DESedeCipher",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.DHParameters",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.HmacCore$HmacSHA256",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.crypto.provider.TlsMasterSecretGenerator",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"groovy.lang.Closure"
+},
+{
+ "name":"java.io.Console",
+ "methods":[{"name":"isTerminal","parameterTypes":[] }]
+},
+{
+ "name":"java.io.Serializable",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.Class",
+ "methods":[{"name":"getRecordComponents","parameterTypes":[] }]
+},
+{
+ "name":"java.lang.Comparable",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.Double",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"java.lang.Number",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.Object",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.Record",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.String"
+},
+{
+ "name":"java.lang.System",
+ "methods":[{"name":"console","parameterTypes":[] }]
+},
+{
+ "name":"java.lang.Thread",
+ "fields":[{"name":"threadLocalRandomProbe"}]
+},
+{
+ "name":"java.lang.constant.Constable",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.constant.ConstantDesc",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.lang.reflect.Executable",
+ "methods":[{"name":"getParameters","parameterTypes":[] }]
+},
+{
+ "name":"java.lang.reflect.Method"
+},
+{
+ "name":"java.lang.reflect.Parameter",
+ "methods":[{"name":"getName","parameterTypes":[] }]
+},
+{
+ "name":"java.lang.reflect.RecordComponent",
+ "methods":[{"name":"getName","parameterTypes":[] }, {"name":"getType","parameterTypes":[] }]
+},
+{
+ "name":"java.nio.file.Path"
+},
+{
+ "name":"java.nio.file.Paths",
+ "methods":[{"name":"get","parameterTypes":["java.lang.String","java.lang.String[]"] }]
+},
+{
+ "name":"java.security.AlgorithmParametersSpi"
+},
+{
+ "name":"java.security.KeyStoreSpi"
+},
+{
+ "name":"java.security.SecureRandomParameters"
+},
+{
+ "name":"java.security.interfaces.ECPrivateKey"
+},
+{
+ "name":"java.security.interfaces.ECPublicKey"
+},
+{
+ "name":"java.security.interfaces.RSAPrivateKey"
+},
+{
+ "name":"java.security.interfaces.RSAPublicKey"
+},
+{
+ "name":"java.sql.Connection"
+},
+{
+ "name":"java.sql.Date"
+},
+{
+ "name":"java.sql.Driver"
+},
+{
+ "name":"java.sql.DriverManager",
+ "methods":[{"name":"getConnection","parameterTypes":["java.lang.String"] }, {"name":"getDriver","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"java.sql.Time",
+ "methods":[{"name":"","parameterTypes":["long"] }]
+},
+{
+ "name":"java.sql.Timestamp",
+ "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"java.time.Duration",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.Instant",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.LocalDate",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.LocalDateTime",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.LocalTime",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.MonthDay",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.OffsetDateTime",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.OffsetTime",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.Period",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.Year",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.YearMonth",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.time.ZoneId",
+ "methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"java.time.ZoneOffset",
+ "methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"java.time.ZonedDateTime",
+ "methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
+},
+{
+ "name":"java.util.Date"
+},
+{
+ "name":"java.util.Map",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"java.util.concurrent.ForkJoinTask",
+ "fields":[{"name":"aux"}, {"name":"status"}]
+},
+{
+ "name":"java.util.concurrent.atomic.AtomicBoolean",
+ "fields":[{"name":"value"}]
+},
+{
+ "name":"java.util.concurrent.atomic.AtomicMarkableReference",
+ "fields":[{"name":"pair"}]
+},
+{
+ "name":"java.util.concurrent.atomic.AtomicReference",
+ "fields":[{"name":"value"}]
+},
+{
+ "name":"java.util.concurrent.atomic.Striped64",
+ "fields":[{"name":"base"}, {"name":"cellsBusy"}]
+},
+{
+ "name":"java.util.concurrent.atomic.Striped64$Cell",
+ "fields":[{"name":"value"}]
+},
+{
+ "name":"javax.security.auth.x500.X500Principal",
+ "fields":[{"name":"thisX500Name"}],
+ "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }]
+},
+{
+ "name":"jdk.internal.misc.Unsafe"
+},
+{
+ "name":"kotlin.Unit"
+},
+{
+ "name":"manifest_entry"
+},
+{
+ "name":"org.apache.commons.logging.LogFactory"
+},
+{
+ "name":"org.apache.commons.logging.impl.Log4JLogger",
+ "methods":[{"name":"","parameterTypes":["java.lang.String"] }, {"name":"setLogFactory","parameterTypes":["org.apache.commons.logging.LogFactory"] }]
+},
+{
+ "name":"org.apache.commons.logging.impl.LogFactoryImpl",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.commons.logging.impl.WeakHashtable",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.hadoop.fs.FSDataInputStream"
+},
+{
+ "name":"org.apache.hadoop.mapred.JobConf"
+},
+{
+ "name":"org.apache.hadoop.mapred.JobConfigurable"
+},
+{
+ "name":"org.apache.hadoop.thirdparty.com.google.common.util.concurrent.AbstractFuture",
+ "fields":[{"name":"listeners"}, {"name":"value"}, {"name":"waiters"}]
+},
+{
+ "name":"org.apache.hadoop.thirdparty.com.google.common.util.concurrent.AbstractFuture$Waiter",
+ "fields":[{"name":"next"}, {"name":"thread"}]
+},
+{
+ "name":"org.apache.http.client.config.RequestConfig$Builder",
+ "methods":[{"name":"setNormalizeUri","parameterTypes":["boolean"] }]
+},
+{
+ "name":"org.apache.iceberg.GenericDataFile",
+ "methods":[{"name":"","parameterTypes":["org.apache.iceberg.types.Types$StructType"] }]
+},
+{
+ "name":"org.apache.iceberg.GenericManifestEntry",
+ "methods":[{"name":"","parameterTypes":["org.apache.iceberg.types.Types$StructType"] }]
+},
+{
+ "name":"org.apache.iceberg.GenericManifestFile",
+ "methods":[{"name":"","parameterTypes":["org.apache.avro.Schema"] }]
+},
+{
+ "name":"org.apache.iceberg.GenericPartitionFieldSummary",
+ "methods":[{"name":"","parameterTypes":["org.apache.avro.Schema"] }]
+},
+{
+ "name":"org.apache.iceberg.PartitionData",
+ "methods":[{"name":"","parameterTypes":["org.apache.iceberg.types.Types$StructType"] }]
+},
+{
+ "name":"org.apache.iceberg.aws.ApacheHttpClientConfigurations",
+ "methods":[{"name":"create","parameterTypes":["java.util.Map"] }]
+},
+{
+ "name":"org.apache.iceberg.aws.AwsClientFactories$DefaultAwsClientFactory",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.iceberg.aws.s3.S3FileIO",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.iceberg.hadoop.HadoopMetricsContext",
+ "methods":[{"name":"","parameterTypes":["java.lang.String"] }]
+},
+{
+ "name":"org.apache.iceberg.relocated.com.google.common.collect.BiMap",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.relocated.com.google.common.collect.ImmutableBiMap",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.relocated.com.google.common.collect.RegularImmutableMap",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"org.apache.iceberg.relocated.com.google.common.collect.SingletonImmutableBiMap",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"org.apache.iceberg.rest.RESTMessage",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.rest.RESTRequest",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.rest.RESTResponse",
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"org.apache.iceberg.rest.requests.CreateNamespaceRequest",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"org.apache.iceberg.rest.requests.CreateTableRequest",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true
+},
+{
+ "name":"org.apache.iceberg.rest.responses.CreateNamespaceResponse",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.iceberg.rest.responses.ListNamespacesResponse",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.iceberg.rest.responses.ListTablesResponse",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.iceberg.util.Pair$1"
+},
+{
+ "name":"org.apache.log4j.Level",
+ "fields":[{"name":"TRACE"}]
+},
+{
+ "name":"org.apache.log4j.Priority"
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.ByteBitPackingBE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.ByteBitPackingForLongBE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.ByteBitPackingForLongLE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.ByteBitPackingLE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.LemireBitPackingBE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.column.values.bitpacking.LemireBitPackingLE",
+ "fields":[{"name":"factory"}]
+},
+{
+ "name":"org.apache.parquet.hadoop.codec.SnappyCodec",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.apache.parquet.hadoop.codec.ZstandardCodec",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.brotli.dec.BrotliInputStream"
+},
+{
+ "name":"org.jline.terminal.impl.exec.ExecTerminalProvider",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.jline.terminal.impl.ffm.FfmTerminalProvider"
+},
+{
+ "name":"org.jline.terminal.impl.jansi.JansiTerminalProvider",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.jline.terminal.impl.jna.JnaTerminalProvider",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.jline.terminal.impl.jni.JniTerminalProvider",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.osgi.framework.BundleEvent"
+},
+{
+ "name":"picocli.AutoComplete$GenerateCompletion",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"picocli.CommandLine$AutoHelpMixin",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true
+},
+{
+ "name":"scala.util.Properties"
+},
+{
+ "name":"shaded.parquet.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.misc.Signal",
+ "methods":[{"name":"","parameterTypes":["java.lang.String"] }, {"name":"handle","parameterTypes":["sun.misc.Signal","sun.misc.SignalHandler"] }]
+},
+{
+ "name":"sun.misc.SignalHandler",
+ "fields":[{"name":"SIG_DFL"}]
+},
+{
+ "name":"sun.misc.Unsafe",
+ "allDeclaredFields":true,
+ "methods":[{"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }]
+},
+{
+ "name":"sun.security.pkcs12.PKCS12KeyStore",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.DSA$SHA224withDSA",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.DSA$SHA256withDSA",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.JavaKeyStore$DualFormatJKS",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.JavaKeyStore$JKS",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.NativePRNG",
+ "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }]
+},
+{
+ "name":"sun.security.provider.SHA",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.SHA2$SHA224",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.SHA2$SHA256",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.SHA5$SHA384",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.SHA5$SHA512",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.X509Factory",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.provider.certpath.PKIXCertPathValidator",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.rsa.PSSParameters",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.rsa.RSAKeyFactory$Legacy",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.rsa.RSAPSSSignature",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.rsa.RSASignature$SHA224withRSA",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.rsa.RSASignature$SHA256withRSA",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.ssl.SSLContextImpl$TLSContext",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"sun.security.util.ObjectIdentifier"
+},
+{
+ "name":"sun.security.x509.AuthorityInfoAccessExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.AuthorityKeyIdentifierExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.BasicConstraintsExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.CRLDistributionPointsExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.CertificateExtensions"
+},
+{
+ "name":"sun.security.x509.CertificatePoliciesExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.ExtendedKeyUsageExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.IssuerAlternativeNameExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.KeyUsageExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.NetscapeCertTypeExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.PrivateKeyUsageExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.SubjectAlternativeNameExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+},
+{
+ "name":"sun.security.x509.SubjectKeyIdentifierExtension",
+ "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
+}
+]
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/resource-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/resource-config.json
new file mode 100644
index 00000000..1912bec8
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/resource-config.json
@@ -0,0 +1,109 @@
+{
+ "resources":{
+ "includes":[{
+ "pattern":"\\QMETA-INF/maven/org.jline/jline-native/pom.properties\\E"
+ }, {
+ "pattern":"\\QMETA-INF/maven/org.xerial.snappy/snappy-java/pom.properties\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/ch.qos.logback.classic.spi.Configurator\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.nio.charset.spi.CharsetProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/javax.xml.stream.XMLInputFactory\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org.apache.avro.Conversion\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org.apache.avro.LogicalTypes$LogicalTypeFactory\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org.apache.commons.logging.LogFactory\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org/jline/terminal/provider/exec\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org/jline/terminal/provider/ffm\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jansi\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jna\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/org/jline/terminal/provider/jni\\E"
+ }, {
+ "pattern":"\\QMETA-INF/services/software.amazon.awssdk.http.SdkHttpService\\E"
+ }, {
+ "pattern":"\\Qcommons-logging.properties\\E"
+ }, {
+ "pattern":"\\Qcore-default.xml\\E"
+ }, {
+ "pattern":"\\Qcore-site.xml\\E"
+ }, {
+ "pattern":"\\Qhadoop-site.xml\\E"
+ }, {
+ "pattern":"\\Qiceberg-build.properties\\E"
+ }, {
+ "pattern":"\\Qlinux/amd64/libzstd-jni-1.5.6-6.so\\E"
+ }, {
+ "pattern":"\\Qlogback-test.scmo\\E"
+ }, {
+ "pattern":"\\Qlogback-test.xml\\E"
+ }, {
+ "pattern":"\\Qlogback.scmo\\E"
+ }, {
+ "pattern":"\\Qlogback.xml\\E"
+ }, {
+ "pattern":"\\Qmapred-default.xml\\E"
+ }, {
+ "pattern":"\\Qmapred-site.xml\\E"
+ }, {
+ "pattern":"\\Qmozilla/public-suffix-list.txt\\E"
+ }, {
+ "pattern":"\\Qorg-xerial-snappy.properties\\E"
+ }, {
+ "pattern":"\\Qorg/apache/hc/client5/version.properties\\E"
+ }, {
+ "pattern":"\\Qorg/jline/nativ/Linux/x86_64/libjlinenative.so\\E"
+ }, {
+ "pattern":"\\Qorg/jline/utils/capabilities.txt\\E"
+ }, {
+ "pattern":"\\Qorg/jline/utils/xterm-256color.caps\\E"
+ }, {
+ "pattern":"\\Qorg/publicsuffix/list/effective_tld_names.dat\\E"
+ }, {
+ "pattern":"\\Qorg/xerial/snappy/VERSION\\E"
+ }, {
+ "pattern":"\\Qorg/xerial/snappy/native/Linux/x86_64/libsnappyjava.so\\E"
+ }, {
+ "pattern":"\\Qsoftware/amazon/awssdk/core/util/mime.types\\E"
+ }, {
+ "pattern":"\\Qsoftware/amazon/awssdk/global/handlers/execution.interceptors\\E"
+ }, {
+ "pattern":"\\Qsoftware/amazon/awssdk/global/partitions.json\\E"
+ }, {
+ "pattern":"\\Qsoftware/amazon/awssdk/services/s3/execution.interceptors\\E"
+ }, {
+ "pattern":"\\Qyarn-default.xml\\E"
+ }, {
+ "pattern":"\\Qyarn-site.xml\\E"
+ }, {
+ "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfkc.nrm\\E"
+ }, {
+ "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E"
+ }, {
+ "pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E"
+ }, {
+ "pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
+ }]},
+ "bundles":[]
+}
diff --git a/ice/src/main/resources/META-INF/native-image/com.altinity/ice/serialization-config.json b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/serialization-config.json
new file mode 100644
index 00000000..f3d7e06e
--- /dev/null
+++ b/ice/src/main/resources/META-INF/native-image/com.altinity/ice/serialization-config.json
@@ -0,0 +1,8 @@
+{
+ "types":[
+ ],
+ "lambdaCapturingTypes":[
+ ],
+ "proxies":[
+ ]
+}