Conversation
In production this should have no impact, but will keep current behavior when ImmutableSegment.load(File, ReadMode) is called.
…Value is specified.
This is needed to keep backward compatibility with previous tests.
…testNG parallelism.
|
In https://github.com/apache/pinot/actions/runs/6874613568/job/18696611890?pr=11960 you can see the test that failed. I'm going to comment them again in order to have a green light. |
the output value was changed in #11234 CC @Jackie-Jiang to take a look. |
walterddr
left a comment
There was a problem hiding this comment.
looks good to me mostly. please kindly address the follow ups. mostly on changes that can be separate into different PR
| private static final String FILE_FILTER_PROPERTY = "pinot.fileFilter"; | ||
| private static final String IGNORE_FILTER_PROPERTY = "pinot.runIgnored"; | ||
| private static final int DEFAULT_NUM_PARTITIONS = 4; | ||
| private static final boolean REPORT_IGNORES = true; |
There was a problem hiding this comment.
can we separate this one from this PR?
There was a problem hiding this comment.
I've rollbacked most of these changes in 3dd0886
...-query-runtime/src/test/java/org/apache/pinot/query/runtime/queries/QueryRunnerTestBase.java
Outdated
Show resolved
Hide resolved
| } | ||
|
|
||
| @DataProvider | ||
| @DataProvider(parallel = true) |
There was a problem hiding this comment.
i wasn't sure this is fully verified. if possible let's keep this separate into another PR
...src/main/java/org/apache/pinot/segment/local/segment/index/nullvalue/NullValueIndexType.java
Outdated
Show resolved
Hide resolved
.../apache/pinot/segment/local/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
Outdated
Show resolved
Hide resolved
…al/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java Co-authored-by: Xiaotian (Jackie) Jiang <17555551+Jackie-Jiang@users.noreply.github.com>
…s false and nullHandlingEnabled is true
…chema-null-handling
| "options": { | ||
| "nullHandling": { | ||
| "mode": "column", | ||
| "default": true |
There was a problem hiding this comment.
^^
Also, how does it work right now? Do we have test that rely on column based null handling to be enabled?
...-query-planner/src/test/java/org/apache/pinot/query/testutils/MockRoutingManagerFactory.java
Outdated
Show resolved
Hide resolved
| { | ||
| "comments": "table aren't actually partitioned by val thus all segments can produce duplicate results, thus [[8]]", | ||
| "sql": "SELECT SEGMENT_PARTITIONED_DISTINCT_COUNT(val) FROM {tbl1}", | ||
| "ignored": true, |
There was a problem hiding this comment.
Shall we try removing the ignored flag and see if they still fail? If so, we might want to debug them because this can cause regression
|
|
||
| @Test(dataProvider = "provideCases", dataProviderClass = NullValueIndexTypeTest.class) | ||
| public void isEnabledWhenNullable(boolean columnNullHandling, boolean fieldNullable, IndexConfig expected) { | ||
| _tableConfig.getIndexingConfig().setNullHandlingEnabled(true); |
There was a problem hiding this comment.
this is needed b/c the logic now rely on table config. (backward incompat?)
This is another approach to implement column level nullability, as explained in #10381.
Introducing null handling modes
After discussing with @Jackie-Jiang, @walterddr and @npawar we decided to propose this third approach where each table specify how to handle nulls. There are two possible ways to handle null:
Multi-stage engine (aka V2) has also been modified to reject queries where
SET enableNullHandling = trueAND at least one of the tables involved in the query uses Table mode null handling.TODO
SchemaTypeFactoryNullValueIndexTypeProposed Syntax
Although the null handling mode semantics are clear, it is not so clear how to configure them. What is explained here is just a proposal open to discussion and can be changed during the PR review.
The proposal is to add a new JSON property in the schema*.
This new property can be configured as:
The default value for
enableColumnBasedNullHandlingis false, which keeps compatibility with previous code. When it is changed to true, Pinot will ignoreTableConfig.IndexingConfig.nullHandlingEnabledand columns will be nullable if and only ifFieldSpec.notNullis false, which is also the default value.* It is yet to be decide whether it will be added to the TableConfig or the Schema. When this PR was open it was added to the Schema.