You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@graphar.apache.org by "keksmd (via GitHub)" <gi...@apache.org> on 2026/08/19 12:38:06 UTC
[PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
keksmd opened a new pull request, #961:
URL: https://github.com/apache/incubator-graphar/pull/961
### Reason for this PR
Part of #947, tracked by #959. The reader and writer verticals both need one format-neutral
description of a row group before either can name a file format. Without it,
the Parquet backend and the GraphAr reader would each invent their own row
representation, and the two would have to be reconciled later.
### What changes are included in this PR?
A new `graphar-io-api` module holding the neutral batch description plus the
write half of the physical IO boundary:
- `ColumnType` — recursive, format-neutral type (scalars plus `LIST`).
- `Field`, `Schema` — a named nullable column and an ordered, duplicate-free,
immutable column list.
- `Row`, `RecordBatch`, `BatchCursor` — a row whose values follow one documented
Java mapping, a finite batch sharing a schema, and a closeable cursor.
- `WriteRequest`, `WriteMode`, `PhysicalWriter` — a URI, a schema, and a target
disposition, and the writer that drains a cursor into that target.
The module has no dependency on any other GraphAr module, so a format backend
can implement it without inheriting the metadata or storage layers.
The read half of the boundary (`ReadRequest`, projection, filter, row range,
capability reporting, `PhysicalReader`) is deliberately left out and will follow
as its own PR against this base, so that the two halves can be reviewed
independently.
### Are these changes tested?
Yes, 27 tests. The value types are pinned directly; the batch, cursor, and
writer contracts are pinned against an in-memory reference implementation that
stands in for a real format backend, covering the documented value mapping for
every column kind, cursor exhaustion, cursor ownership, schema mismatch, and
both write dispositions.
```
mvn --no-transfer-progress -pl io-api clean verify
Tests run: 27, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
```
### Are there any user-facing changes?
A new module and package `org.apache.graphar.io`. Nothing existing changes.
## Checklist
- [x] I have performed a self-review of my own code.
- [ ] I have formatted my own code using `make cpplint` before submitting when changed files are in the `cpp` directory.
- [x] I have performed `pre-commit run` before commit the changed files.
- [x] I have added tests to prove my changes are effective.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko merged PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko commented on code in PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#discussion_r3842753657
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/WriteRequest.java:
##########
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+import java.net.URI;
+import java.util.Objects;
+
+/** An immutable physical write operation for one schema and output location. */
+public final class WriteRequest {
Review Comment:
I guess we can see in the future something like request deduplication or queue of requests... Let's add `equals` / `hashCode` ? It will cost us almost nothing: uri, schema, mode are already supporting equals and hash.
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/ColumnType.java:
##########
@@ -0,0 +1,208 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.OptionalInt;
+
+/** A recursive, Arrow-shaped logical type used in a physical {@link Schema}. */
+public final class ColumnType {
+ /** Scalar, fixed-width, and nested shapes that a physical format may describe. */
+ public enum Kind {
+ BOOLEAN,
+ INT8,
+ INT16,
+ INT32,
+ INT64,
+ UINT8,
+ UINT16,
+ UINT32,
+ UINT64,
+ FLOAT32,
+ FLOAT64,
+ STRING,
+ BINARY,
+ DATE,
+ TIMESTAMP_MILLIS,
+ FIXED_SIZE_BINARY,
+ DECIMAL,
+ LIST,
+ FIXED_SIZE_LIST,
+ STRUCT,
+ MAP
+ }
+
+ private final Kind kind;
+ private final List<Field> children;
+ private final int fixedSize;
+ private final int precision;
+ private final int scale;
+
+ private ColumnType(Kind kind, List<Field> children, int fixedSize, int precision, int scale) {
+ this.kind = kind;
+ this.children = children;
+ this.fixedSize = fixedSize;
+ this.precision = precision;
+ this.scale = scale;
+ }
+
+ /** Creates one of the scalar kinds. */
+ public static ColumnType of(Kind kind) {
+ Objects.requireNonNull(kind, "A column type kind cannot be null.");
+ if (!isScalar(kind)) {
+ throw new IllegalArgumentException("Use a dedicated factory for " + kind + ".");
+ }
+ return new ColumnType(kind, List.of(), 0, 0, 0);
+ }
+
+ /** Creates a list whose anonymous element has {@code elementType}. */
+ public static ColumnType listOf(ColumnType elementType) {
+ return listOfElement(new Field("element", elementType, true));
+ }
+
+ /** Creates a list whose element field retains its physical name and nullability. */
+ public static ColumnType listOfElement(Field elementField) {
+ return collection(Kind.LIST, elementField, 0);
+ }
+
+ /** Creates a fixed-size list whose every value contains exactly {@code listSize} elements. */
+ public static ColumnType fixedSizeListOf(Field elementField, int listSize) {
+ if (listSize <= 0) {
+ throw new IllegalArgumentException("A fixed-size list must have a positive size.");
+ }
+ return collection(Kind.FIXED_SIZE_LIST, elementField, listSize);
+ }
+
+ /** Creates a struct with the supplied named children in physical order. */
+ public static ColumnType structOf(List<Field> fields) {
+ return new ColumnType(Kind.STRUCT, copyFields(fields), 0, 0, 0);
+ }
+
+ /** Creates a map with the physical key and value fields in that order. */
+ public static ColumnType mapOf(Field key, Field value) {
+ Objects.requireNonNull(key, "A map key field cannot be null.");
+ if (key.nullable()) {
+ throw new IllegalArgumentException("A map key field cannot be nullable.");
+ }
+ return new ColumnType(
+ Kind.MAP,
+ List.of(key, Objects.requireNonNull(value, "A map value field cannot be null.")),
+ 0,
+ 0,
+ 0);
+ }
+
+ /** Creates a fixed-width binary value with exactly {@code byteWidth} bytes. */
+ public static ColumnType fixedSizeBinary(int byteWidth) {
+ if (byteWidth <= 0) {
+ throw new IllegalArgumentException("Fixed-size binary width must be positive.");
+ }
+ return new ColumnType(Kind.FIXED_SIZE_BINARY, List.of(), byteWidth, 0, 0);
+ }
+
+ /** Creates a decimal whose scale is between zero and its positive precision. */
+ public static ColumnType decimal(int precision, int scale) {
+ if (precision <= 0 || scale < 0 || scale > precision) {
+ throw new IllegalArgumentException(
+ "Decimal requires 0 <= scale <= positive precision.");
+ }
+ return new ColumnType(Kind.DECIMAL, List.of(), 0, precision, scale);
+ }
+
+ /** Returns this type's shape. */
+ public Kind kind() {
+ return kind;
+ }
+
+ /** Returns child fields in physical order. Scalar types have no children. */
+ public List<Field> children() {
+ return children;
+ }
+
+ /** Returns the list element type for a list shape, or empty for all other shapes. */
+ public Optional<ColumnType> elementType() {
+ return (kind == Kind.LIST || kind == Kind.FIXED_SIZE_LIST)
+ ? Optional.of(children.get(0).type())
+ : Optional.empty();
+ }
+
+ /** Returns a fixed binary width or fixed-list size when one applies. */
+ public OptionalInt fixedSize() {
+ return fixedSize == 0 ? OptionalInt.empty() : OptionalInt.of(fixedSize);
+ }
+
+ /** Returns decimal precision for a decimal type. */
+ public OptionalInt precision() {
+ return precision == 0 ? OptionalInt.empty() : OptionalInt.of(precision);
+ }
+
+ /** Returns decimal scale for a decimal type. */
+ public OptionalInt scale() {
+ return kind == Kind.DECIMAL ? OptionalInt.of(scale) : OptionalInt.empty();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (!(other instanceof ColumnType)) {
+ return false;
+ }
+ ColumnType that = (ColumnType) other;
+ return kind == that.kind
+ && fixedSize == that.fixedSize
+ && precision == that.precision
+ && scale == that.scale
+ && children.equals(that.children);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(kind, children, fixedSize, precision, scale);
+ }
+
+ private static ColumnType collection(Kind kind, Field elementField, int fixedSize) {
+ return new ColumnType(
+ kind,
+ List.of(
+ Objects.requireNonNull(
+ elementField, "A list element field cannot be null.")),
+ fixedSize,
+ 0,
+ 0);
+ }
+
+ private static List<Field> copyFields(List<Field> fields) {
+ Objects.requireNonNull(fields, "Child fields cannot be null.");
+ for (Field field : fields) {
+ Objects.requireNonNull(field, "A child field cannot be null.");
+ }
+ return List.copyOf(fields);
+ }
+
+ private static boolean isScalar(Kind kind) {
+ return kind != Kind.FIXED_SIZE_BINARY
+ && kind != Kind.DECIMAL
+ && kind != Kind.LIST
+ && kind != Kind.FIXED_SIZE_LIST
+ && kind != Kind.STRUCT
+ && kind != Kind.MAP;
Review Comment:
Any Kind constant added to the enum in the future will be silently treated as a scalar and accepted by of(Kind), bypassing the dedicated-factory guard even if the new kind requires parameters.
I would say we should switch to case + default that throws an exception.
Like:
```java
switch (kind) {
case BOOLEAN:
case INT8:
...
case` TIMESTAMP_MILLIS:
return true;
case FIXED_SIZE_BINARY:
....
case MAP:
return false;
default:
throw new IllegalStateException("Unhandled kind: " + kind);
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "keksmd (via GitHub)" <gi...@apache.org>.
keksmd commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5386559916
@SemyonSinchenko Спасибо, поправил все пять пунктов в 5837bd5.
1. `Field` теперь value object (`equals/hashCode` по name/type/nullability).
2. `Schema` сохраняет duplicate names: физический доступ только по индексу.
3. `Row` удалён: `RecordBatch` теперь schema + `ValueVector`-ы + row count, а `VectorRecordBatch` проверяет field order, width и value count.
4. `ColumnType` стал recursive Field-shape: child names/nullability сохраняются для LIST/FIXED_SIZE_LIST/STRUCT/MAP; есть fixed binary и decimal. Так можно расширять Parquet/Arrow shapes, не замораживая плоский enum. Arrow не стал обязательной зависимостью — адаптеры сами владеют native vector lifetime.
5. Добавил `APPEND` и контрактный тест с реальным накоплением значений.
Focused verify: 33 tests, 0 failures; spotless и pre-commit также прошли.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5394182967
@keksmd Спасибо! Мне нравится, я оставил пару минорных комментов
@keksmd Thanks! Much better, I left two minor comments.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "keksmd (via GitHub)" <gi...@apache.org>.
keksmd commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5500902940
Rebased onto current `main` to resolve merge conflicts (pom.xml module list). No functional changes — 35 tests still pass. Ready for merge.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "keksmd (via GitHub)" <gi...@apache.org>.
keksmd commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5501012457
cc @SemyonSinchenko @SYaoJun — rebased and mergeable now, 35 tests green.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko commented on code in PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#discussion_r3836959353
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/WriteMode.java:
##########
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+/** The disposition required for one physical output location. */
+public enum WriteMode {
Review Comment:
Are we going to support `APPEND`?
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/RecordBatch.java:
##########
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+/** A format-neutral, finite group of rows sharing one schema. */
+public interface RecordBatch {
Review Comment:
Why row-oriented model, not columnar? I mean we can have rows and record batch of them, or we can have a column (or vector in Apache Arrow terms) and a batch of them.
Tbh I would prefer to mimic the Apache Arrow layout (as follow as possible to what is described in the Apache Arrow Java). The GraphAr C++ already rely on Arrow.
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/Field.java:
##########
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+import java.util.Objects;
+
+/** A named, typed physical column in a {@link Schema}. */
+public final class Field {
Review Comment:
Checking a field in schema is a common op, let's add `equals` and `hash` as well.
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/ColumnType.java:
##########
@@ -0,0 +1,89 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+import java.util.Objects;
+import java.util.Optional;
+
+/** A recursive, format-neutral type used in a physical {@link Schema}. */
+public final class ColumnType {
Review Comment:
Do we want a more rich hierarchy? FixedSized, VariableSized, Complex (List, etc.), etc.? This one looks complete but the target is to support all that Apache Parquet supports. And one day the current proposal may become hard to maintain
##########
maven-projects/io-api/src/main/java/org/apache/graphar/io/Schema.java:
##########
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+package org.apache.graphar.io;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+
+/** An ordered, immutable mapping of physical batch columns to neutral field definitions. */
+public final class Schema {
+ private final List<Field> fields;
+
+ public Schema(List<Field> fields) {
+ Objects.requireNonNull(fields, "Schema fields cannot be null.");
+ List<Field> copy = new ArrayList<>(fields.size());
+ Set<String> names = new HashSet<>();
+ for (Field field : fields) {
+ Field nonNullField = Objects.requireNonNull(field, "A schema field cannot be null.");
+ if (!names.add(nonNullField.name())) {
+ throw new IllegalArgumentException(
+ "Schema contains duplicate field: " + nonNullField.name());
Review Comment:
Are we sure that it is a responsibility of the `Schema` to check for duplicates? Because fields can be accessed by index (and it is the only way to access), I see no problems in duplicated names tbh
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5397329922
+ merge conflicts
cc: @keksmd
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "keksmd (via GitHub)" <gi...@apache.org>.
keksmd commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5397107105
@SemyonSinchenko Спасибо за второй проход — сверил весь набор review-комментариев и поправил оставшиеся два minor пункта в `fa967da`:
1. `ColumnType.isScalar` теперь исчерпывающий `switch`: новый `Kind` нельзя молча принять как scalar; unhandled value падает явно.
2. Добавил value semantics для `Schema` и `WriteRequest` (`equals`/`hashCode`) и тесты на одинаковые независимые schema/request.
Предыдущие пять замечаний из первого review также остаются закрытыми: value `Field`, duplicate schema names, vector `RecordBatch`, recursive Arrow-shaped `ColumnType`, и `APPEND`.
Проверка: `mvn --no-transfer-progress -q -f maven-projects/pom.xml -pl io-api -am verify` — 35 tests, 0 failures; Spotless, pre-commit и `git diff --check` прошли.
Когда будет минутка, пожалуйста, посмотри ещё раз и, если всё ок, approve.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org
Re: [PR] feat(java): describe physical batches and writes without a format [incubator-graphar]
Posted by "SemyonSinchenko (via GitHub)" <gi...@apache.org>.
SemyonSinchenko commented on PR #961:
URL: https://github.com/apache/incubator-graphar/pull/961#issuecomment-5500962844
Nice work!
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@graphar.apache.org
For additional commands, e-mail: commits-help@graphar.apache.org