You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by "xiangfu0 (via GitHub)" <gi...@apache.org> on 2026/01/20 11:06:15 UTC
[PR] Support upsert semantics for OFFLINE dimension tables [pinot]
xiangfu0 opened a new pull request, #17536:
URL: https://github.com/apache/pinot/pull/17536
### Motivation
- Allow offline dimension tables to support UPSERT-like semantics so later segments can deterministically overwrite earlier rows with the same primary key instead of producing duplicates.
- Prevent invalid table configuration combinations that would enable both upsert semantics and strict duplicate-key errors.
### Description
- Add an `enableUpsert` flag to `DimensionTableConfig` with a JSON-aware constructor, backwards-compatible constructors, and an `isEnableUpsert()` getter in `pinot-spi`.
- Thread `enableUpsert` into `DimensionTableDataManager` by adding `_enableUpsert`, reading it from `DimensionTableConfig`, and changing duplicate-key handling to only throw when `!_enableUpsert && _errorOnDuplicatePrimaryKey` in both fast-lookup and memory-optimized loading paths.
- Implement deterministic segment ordering when upsert is enabled via `sortSegmentsForUpsert(...)` which sorts by `indexCreationTime` then `segmentName` so later segments overwrite earlier ones.
- Add `validateDimensionTableConfig(...)` in `TableConfigUtils.validate` to reject configs that enable both `enableUpsert` and `errorOnDuplicatePrimaryKey` simultaneously.
- Add/adjust unit-test helpers and tests in `DimensionTableDataManagerTest` (including `testUpsertOverwritesDuplicatePrimaryKey` and new `testUpsertDedupesAcrossSegments`) and add a validation test in `TableConfigUtilsTest`; also add `createSegmentFromCsv` test helper and update existing tests to pass the new flag.
### Testing
- Unit tests added or updated: `DimensionTableDataManagerTest#testUpsertOverwritesDuplicatePrimaryKey` and `DimensionTableDataManagerTest#testUpsertDedupesAcrossSegments`, plus an invalid-config check in `TableConfigUtilsTest`; these cover overwrite semantics and invalid config detection.
- No automated test suites (for example `mvn` runs or CI) were executed as part of this change.
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Support upsert semantics for OFFLINE dimension tables [pinot]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #17536:
URL: https://github.com/apache/pinot/pull/17536#discussion_r2713613575
##########
pinot-core/src/test/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManagerTest.java:
##########
@@ -159,6 +161,19 @@ private Schema getSchemaWithExtraColumn() {
.build();
}
+ private File createSegmentFromCsv(File csvFile, TableConfig tableConfig, Schema schema, String segmentName)
+ throws Exception {
+ File tableDataDir = new File(TEMP_DIR, OFFLINE_TABLE_NAME + "_upsert");
Review Comment:
The hardcoded suffix '_upsert' in the directory name could cause collisions if `createSegmentFromCsv` is called multiple times in the same test or across tests. Consider using a unique directory name per invocation, such as appending the segment name or a timestamp.
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Support upsert semantics for OFFLINE dimension tables [pinot]
Posted by "codecov-commenter (via GitHub)" <gi...@apache.org>.
codecov-commenter commented on PR #17536:
URL: https://github.com/apache/pinot/pull/17536#issuecomment-3772499102
## [Codecov](https://app.codecov.io/gh/apache/pinot/pull/17536?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `61.29032%` with `12 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 55.54%. Comparing base ([`c899956`](https://app.codecov.io/gh/apache/pinot/commit/c899956b2d084dcad7aa4e7cd5515edb69f0ac9d?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`6349c52`](https://app.codecov.io/gh/apache/pinot/commit/6349c5287478e111e92a9140f0f982f512888a4a?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
| [Files with missing lines](https://app.codecov.io/gh/apache/pinot/pull/17536?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...ata/manager/offline/DimensionTableDataManager.java](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&filepath=pinot-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpinot%2Fcore%2Fdata%2Fmanager%2Foffline%2FDimensionTableDataManager.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cGlub3QtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3QvY29yZS9kYXRhL21hbmFnZXIvb2ZmbGluZS9EaW1lbnNpb25UYWJsZURhdGFNYW5hZ2VyLmphdmE=) | 76.47% | [3 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...he/pinot/segment/local/utils/TableConfigUtils.java](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&filepath=pinot-segment-local%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpinot%2Fsegment%2Flocal%2Futils%2FTableConfigUtils.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cGlub3Qtc2VnbWVudC1sb2NhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3Qvc2VnbWVudC9sb2NhbC91dGlscy9UYWJsZUNvbmZpZ1V0aWxzLmphdmE=) | 42.85% | [3 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...e/pinot/spi/config/table/DimensionTableConfig.java](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&filepath=pinot-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fpinot%2Fspi%2Fconfig%2Ftable%2FDimensionTableConfig.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-cGlub3Qtc3BpL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9waW5vdC9zcGkvY29uZmlnL3RhYmxlL0RpbWVuc2lvblRhYmxlQ29uZmlnLmphdmE=) | 42.85% | [3 Missing and 1 partial :warning: ](https://app.codecov.io/gh/apache/pinot/pull/17536?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
> :exclamation: There is a different number of reports uploaded between BASE (c899956) and HEAD (6349c52). Click for more details.
>
> <details><summary>HEAD has 32 uploads less than BASE</summary>
>
>| Flag | BASE (c899956) | HEAD (6349c52) |
>|------|------|------|
>|java-21|4|1|
>|unittests1|2|1|
>|unittests|3|1|
>|temurin|9|1|
>|java-11|5|0|
>|integration|6|0|
>|integration2|2|0|
>|integration1|2|0|
>|unittests2|1|0|
>|custom-integration1|2|0|
></details>
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## master #17536 +/- ##
============================================
- Coverage 63.21% 55.54% -7.67%
+ Complexity 1476 702 -774
============================================
Files 3170 2473 -697
Lines 189508 139852 -49656
Branches 28997 22296 -6701
============================================
- Hits 119789 77676 -42113
+ Misses 60417 55622 -4795
+ Partials 9302 6554 -2748
```
| [Flag](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Coverage Δ | |
|---|---|---|
| [custom-integration1](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration1](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [integration2](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [java-11](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
| [java-21](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `55.54% <61.29%> (+0.02%)` | :arrow_up: |
| [temurin](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `55.54% <61.29%> (-7.67%)` | :arrow_down: |
| [unittests](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `55.54% <61.29%> (-7.67%)` | :arrow_down: |
| [unittests1](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `55.54% <61.29%> (-0.02%)` | :arrow_down: |
| [unittests2](https://app.codecov.io/gh/apache/pinot/pull/17536/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | `?` | |
Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#carryforward-flags-in-the-pull-request-comment) to find out more.
</details>
[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/apache/pinot/pull/17536?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :package: [JS Bundle Analysis](https://docs.codecov.com/docs/javascript-bundle-analysis): Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
</details>
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Support upsert semantics for OFFLINE dimension tables [pinot]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #17536:
URL: https://github.com/apache/pinot/pull/17536#discussion_r2707881028
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -320,7 +325,12 @@ private DimensionTable createMemOptimisedDimensionTable() {
Object[] primaryKey = recordReader.getRecordValues(i, pkIndexes);
long readerIdxAndDocId = (((long) readerIdx) << 32) | (i & 0xffffffffL);
- lookupTable.put(primaryKey, readerIdxAndDocId);
+ long previousValue = lookupTable.put(primaryKey, readerIdxAndDocId);
+ if (!_enableUpsert && _errorOnDuplicatePrimaryKey && previousValue != Long.MIN_VALUE) {
+ throw new IllegalStateException(
+ "Caught exception while reading records from segment: " + indexSegment.getSegmentName()
+ + "primary key already exist for: " + Arrays.toString(primaryKey));
Review Comment:
Corrected grammar in error message from 'primary key already exist' to 'primary key already exists'.
```suggestion
+ "primary key already exists for: " + Arrays.toString(primaryKey));
```
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -320,7 +325,12 @@ private DimensionTable createMemOptimisedDimensionTable() {
Object[] primaryKey = recordReader.getRecordValues(i, pkIndexes);
long readerIdxAndDocId = (((long) readerIdx) << 32) | (i & 0xffffffffL);
- lookupTable.put(primaryKey, readerIdxAndDocId);
+ long previousValue = lookupTable.put(primaryKey, readerIdxAndDocId);
+ if (!_enableUpsert && _errorOnDuplicatePrimaryKey && previousValue != Long.MIN_VALUE) {
Review Comment:
The duplicate detection logic assumes `Long.MIN_VALUE` is the sentinel for 'no previous value', but `LongObjectHashMap.put()` returns the previous value or a default. If `Long.MIN_VALUE` is a legitimate doc ID or the map's default differs, this check will fail. Verify the actual return value convention for `LongObjectHashMap` and use the correct sentinel or check method.
```suggestion
boolean hasExistingKey = lookupTable.containsKey(primaryKey);
lookupTable.put(primaryKey, readerIdxAndDocId);
if (!_enableUpsert && _errorOnDuplicatePrimaryKey && hasExistingKey) {
```
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -320,7 +325,12 @@ private DimensionTable createMemOptimisedDimensionTable() {
Object[] primaryKey = recordReader.getRecordValues(i, pkIndexes);
long readerIdxAndDocId = (((long) readerIdx) << 32) | (i & 0xffffffffL);
- lookupTable.put(primaryKey, readerIdxAndDocId);
+ long previousValue = lookupTable.put(primaryKey, readerIdxAndDocId);
+ if (!_enableUpsert && _errorOnDuplicatePrimaryKey && previousValue != Long.MIN_VALUE) {
+ throw new IllegalStateException(
+ "Caught exception while reading records from segment: " + indexSegment.getSegmentName()
+ + "primary key already exist for: " + Arrays.toString(primaryKey));
Review Comment:
Missing space between segment name and 'primary key' in the concatenated error message. Should be: `+ \" primary key already exist for: \"` to match the formatting in the fast-lookup path at line 256.
```suggestion
+ " primary key already exist for: " + Arrays.toString(primaryKey));
```
##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java:
##########
@@ -385,6 +387,16 @@ private static void validateValidationConfig(TableConfig tableConfig, Schema sch
validateRetentionConfig(tableConfig);
}
+ private static void validateDimensionTableConfig(TableConfig tableConfig) {
+ DimensionTableConfig dimensionTableConfig = tableConfig.getDimensionTableConfig();
+ if (dimensionTableConfig == null) {
+ return;
+ }
+ Preconditions.checkState(!(dimensionTableConfig.isEnableUpsert()
+ && dimensionTableConfig.isErrorOnDuplicatePrimaryKey()),
+ "Dimension table config cannot enable upsert and errorOnDuplicatePrimaryKey at the same time");
Review Comment:
The error message uses mixed naming styles: 'upsert' (lowercase) and 'errorOnDuplicatePrimaryKey' (camelCase). For consistency and clarity, either use all user-facing terms ('upsert' and 'error-on-duplicate-primary-key') or all code identifiers. Consider: 'Dimension table config cannot have both enableUpsert and errorOnDuplicatePrimaryKey enabled'.
```suggestion
"Dimension table config cannot have both enableUpsert and errorOnDuplicatePrimaryKey enabled");
```
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Support upsert semantics for OFFLINE dimension tables [pinot]
Posted by "Jackie-Jiang (via GitHub)" <gi...@apache.org>.
Jackie-Jiang commented on code in PR #17536:
URL: https://github.com/apache/pinot/pull/17536#discussion_r2718597633
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -332,6 +343,16 @@ private DimensionTable createMemOptimisedDimensionTable() {
this);
}
+ private void sortSegmentsForUpsert(List<SegmentDataManager> segmentDataManagers) {
+ if (!_enableUpsert) {
Review Comment:
(minor) Put this check on the caller side
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -320,7 +325,13 @@ private DimensionTable createMemOptimisedDimensionTable() {
Object[] primaryKey = recordReader.getRecordValues(i, pkIndexes);
long readerIdxAndDocId = (((long) readerIdx) << 32) | (i & 0xffffffffL);
+ boolean hasExistingKey = lookupTable.containsKey(primaryKey);
Review Comment:
Is this a bugfix? We can check the return value of `lookupTable.put()` to save one map lookup
##########
pinot-spi/src/main/java/org/apache/pinot/spi/config/table/DimensionTableConfig.java:
##########
@@ -26,12 +26,23 @@
public class DimensionTableConfig extends BaseJsonConfig {
private final boolean _disablePreload;
private final boolean _errorOnDuplicatePrimaryKey;
+ private final boolean _enableUpsert;
@JsonCreator
public DimensionTableConfig(@JsonProperty(value = "disablePreload") Boolean disablePreload,
- @JsonProperty(value = "errorOnDuplicatePrimaryKey") Boolean errorOnDuplicatePrimaryKey) {
+ @JsonProperty(value = "errorOnDuplicatePrimaryKey") Boolean errorOnDuplicatePrimaryKey,
Review Comment:
(minor) Not introduced in this PR, but can we modify all of them to be primitive type given the member variables are stored as primitive boolean
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Deterministically order dimension-table segments during lookup loading [pinot]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #17536:
URL: https://github.com/apache/pinot/pull/17536#discussion_r2720425870
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -332,6 +340,13 @@ private DimensionTable createMemOptimisedDimensionTable() {
this);
}
+ private void sortSegmentsForUpsert(List<SegmentDataManager> segmentDataManagers) {
Review Comment:
The method name `sortSegmentsForUpsert` implies it only runs when upsert is enabled, but it's called unconditionally in both loading paths. Consider renaming to `sortSegmentsByCreationTime` or adding a guard condition to only sort when `_enableUpsert` is true.
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -320,7 +323,12 @@ private DimensionTable createMemOptimisedDimensionTable() {
Object[] primaryKey = recordReader.getRecordValues(i, pkIndexes);
long readerIdxAndDocId = (((long) readerIdx) << 32) | (i & 0xffffffffL);
- lookupTable.put(primaryKey, readerIdxAndDocId);
+ long previousValue = lookupTable.put(primaryKey, readerIdxAndDocId);
+ if (_errorOnDuplicatePrimaryKey && previousValue != Long.MIN_VALUE) {
Review Comment:
Same issue as in the fast-lookup path: the condition should be `!_enableUpsert && _errorOnDuplicatePrimaryKey` to align with the PR's stated behavior. Currently, this will throw errors even when upsert is enabled.
```suggestion
if (!_enableUpsert && _errorOnDuplicatePrimaryKey && previousValue != Long.MIN_VALUE) {
```
##########
pinot-core/src/main/java/org/apache/pinot/core/data/manager/offline/DimensionTableDataManager.java:
##########
@@ -249,7 +251,7 @@ private DimensionTable createFastLookupDimensionTable() {
if (_errorOnDuplicatePrimaryKey && previousValue != null) {
Review Comment:
The upsert logic is incomplete. According to the PR description, duplicate-key errors should only be thrown when `!_enableUpsert && _errorOnDuplicatePrimaryKey`. This condition only checks `_errorOnDuplicatePrimaryKey` but doesn't verify that upsert is disabled. When upsert is enabled, this will still throw errors on duplicate keys.
```suggestion
if (_errorOnDuplicatePrimaryKey && !_enableUpsert && previousValue != null) {
```
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org
Re: [PR] Deterministically order dimension-table segments during lookup loading [pinot]
Posted by "xiangfu0 (via GitHub)" <gi...@apache.org>.
xiangfu0 merged PR #17536:
URL: https://github.com/apache/pinot/pull/17536
--
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@pinot.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org