Skip to content

Commit 157b499

Browse files
author
ruslansenchukov
committed
fixed formations
1 parent 536a3be commit 157b499

File tree

2 files changed

+52
-56
lines changed

2 files changed

+52
-56
lines changed

ice/src/main/java/com/altinity/ice/cli/internal/cmd/Insert.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package com.altinity.ice.cli.internal.cmd;
1111

1212
import com.altinity.ice.cli.Main;
13+
import com.altinity.ice.cli.internal.http.MinioWildcard;
1314
import com.altinity.ice.cli.internal.iceberg.Partitioning;
1415
import com.altinity.ice.cli.internal.iceberg.RecordComparator;
1516
import com.altinity.ice.cli.internal.iceberg.SchemaEvolution;
@@ -85,8 +86,6 @@
8586
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
8687
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
8788
import software.amazon.awssdk.utils.Lazy;
88-
import com.altinity.ice.cli.internal.http.MinioWildcard;
89-
9089

9190
public final class Insert {
9291

@@ -108,33 +107,34 @@ public static void run(
108107
// Create transaction and pass it to updatePartitionAndSortOrderMetadata
109108
Transaction txn = table.newTransaction();
110109

111-
try (FileIO tableIO = table.io()) {
112-
Lazy<S3Client> s3ClientLazy = newS3Client(options, tableIO, table);
113-
try {
110+
try (FileIO tableIO = table.io()) {
111+
Lazy<S3Client> s3ClientLazy = newS3Client(options, tableIO, table);
112+
try {
114113
var filesExpanded =
115114
Arrays.stream(files)
116115
.flatMap(
117116
s -> {
118-
if (s.startsWith("s3://") && s.contains("*")) {
119-
var b = S3.bucketPath(s);
120-
return S3
121-
.listWildcard(s3ClientLazy.getValue(), b.bucket(), b.path(), -1)
122-
.stream();
123-
}
124-
125-
// HTTP(S) wildcard for Minio & etc.
126-
if ((s.startsWith("http://") || s.startsWith("https://")) && s.contains("*")) {
127-
try {
128-
return MinioWildcard.listHTTPWildcard(s).stream();
129-
} catch (Exception e) {
130-
throw new RuntimeException("Failed to expand HTTP wildcard for " + s, e);
131-
}
117+
if (s.startsWith("s3://") && s.contains("*")) {
118+
var b = S3.bucketPath(s);
119+
return S3
120+
.listWildcard(s3ClientLazy.getValue(), b.bucket(), b.path(), -1)
121+
.stream();
122+
}
123+
124+
// HTTP(S) wildcard for Minio & etc.
125+
if ((s.startsWith("http://") || s.startsWith("https://"))
126+
&& s.contains("*")) {
127+
try {
128+
return MinioWildcard.listHTTPWildcard(s).stream();
129+
} catch (Exception e) {
130+
throw new RuntimeException("Failed to expand HTTP wildcard for " + s, e);
132131
}
132+
}
133133

134-
return Stream.of(s);
134+
return Stream.of(s);
135135
})
136136
.toList();
137-
137+
138138
if (filesExpanded.isEmpty()) {
139139
throw new BadRequestException("No matching files found");
140140
}

ice/src/main/java/com/altinity/ice/cli/internal/http/MinioWildcard.java

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
* http://www.apache.org/licenses/LICENSE-2.0
99
*/
1010

11-
1211
package com.altinity.ice.cli.internal.http;
1312

1413
import java.net.URI;
@@ -17,39 +16,36 @@
1716
import org.json.*;
1817

1918
public final class MinioWildcard {
20-
private static final HttpClient client = HttpClient.newHttpClient();
21-
22-
public static List<String> listHTTPWildcard(String urlWithStar) throws Exception {
23-
URI uri = URI.create(urlWithStar);
24-
String[] parts = uri.getPath().split("/", 3);
25-
if (parts.length < 2)
26-
throw new IllegalArgumentException("Bad MinIO URL: " + urlWithStar);
27-
28-
String bucket = parts[1];
29-
String prefix = parts.length == 3 ? parts[2].replaceAll("\\*", "") : "";
30-
String endpoint = uri.getScheme() + "://" + uri.getHost() + ":" + uri.getPort();
31-
32-
String listUrl = endpoint + "/" + bucket + "?list-type=2&prefix=" + prefix;
33-
HttpRequest req = HttpRequest.newBuilder(URI.create(listUrl)).GET().build();
34-
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
35-
if (resp.statusCode() != 200)
36-
throw new RuntimeException("MinIO listObjects error: " + resp.statusCode());
37-
38-
JSONObject xml = org.json.XML.toJSONObject(resp.body());
39-
List<String> files = new ArrayList<>();
40-
var result = xml.getJSONObject("ListBucketResult");
41-
var contents = result.optJSONArray("Contents");
42-
if (contents != null) {
43-
for (int i = 0; i < contents.length(); i++) {
44-
String key = contents.getJSONObject(i).getString("Key");
45-
if (key.endsWith(".parquet"))
46-
files.add(endpoint + "/" + bucket + "/" + key);
47-
}
48-
} else {
49-
var single = result.optJSONObject("Contents");
50-
if (single != null)
51-
files.add(endpoint + "/" + bucket + "/" + single.getString("Key"));
52-
}
53-
return files;
19+
private static final HttpClient client = HttpClient.newHttpClient();
20+
21+
public static List<String> listHTTPWildcard(String urlWithStar) throws Exception {
22+
URI uri = URI.create(urlWithStar);
23+
String[] parts = uri.getPath().split("/", 3);
24+
if (parts.length < 2) throw new IllegalArgumentException("Bad MinIO URL: " + urlWithStar);
25+
26+
String bucket = parts[1];
27+
String prefix = parts.length == 3 ? parts[2].replaceAll("\\*", "") : "";
28+
String endpoint = uri.getScheme() + "://" + uri.getHost() + ":" + uri.getPort();
29+
30+
String listUrl = endpoint + "/" + bucket + "?list-type=2&prefix=" + prefix;
31+
HttpRequest req = HttpRequest.newBuilder(URI.create(listUrl)).GET().build();
32+
HttpResponse<String> resp = client.send(req, HttpResponse.BodyHandlers.ofString());
33+
if (resp.statusCode() != 200)
34+
throw new RuntimeException("MinIO listObjects error: " + resp.statusCode());
35+
36+
JSONObject xml = org.json.XML.toJSONObject(resp.body());
37+
List<String> files = new ArrayList<>();
38+
var result = xml.getJSONObject("ListBucketResult");
39+
var contents = result.optJSONArray("Contents");
40+
if (contents != null) {
41+
for (int i = 0; i < contents.length(); i++) {
42+
String key = contents.getJSONObject(i).getString("Key");
43+
if (key.endsWith(".parquet")) files.add(endpoint + "/" + bucket + "/" + key);
44+
}
45+
} else {
46+
var single = result.optJSONObject("Contents");
47+
if (single != null) files.add(endpoint + "/" + bucket + "/" + single.getString("Key"));
5448
}
49+
return files;
50+
}
5551
}

0 commit comments

Comments
 (0)