Skip to content

Commit 38c286a

Browse files
committed
PR comments
Signed-off-by: Vinay Krishna Pudyodu <vinkrish.neo@gmail.com>
1 parent babcda3 commit 38c286a

5 files changed

Lines changed: 13 additions & 2 deletions

File tree

sandbox/libs/analytics-api/src/main/java/org/opensearch/analytics/schema/DateFormatClassifier.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ public enum Kind {
2828
TIMESTAMP
2929
}
3030

31+
// TODO: replace with constants from OpenSearch core's DateFormatters registry once they're
32+
// exposed for external use; today we mirror the well-known names locally to avoid coupling
33+
// to internal APIs.
3134
/** Named formats with year/month/day only. */
3235
private static final Set<String> NAMED_DATE_FORMATS = setOf(
3336
"basic_date",

sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/CastTemporalLiteralValidator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.apache.calcite.sql.type.SqlTypeName;
1919

2020
/** Pre-isthmus pass that rejects malformed CAST(string-lit AS DATE/TIME/TIMESTAMP) and TIMESTAMPADD/DIFF string args. */
21+
// TODO: fold into BackendPlanAdaption alongside CastToVarcharRewriter (unified rejection/coercion model).
2122
final class CastTemporalLiteralValidator {
2223

2324
private CastTemporalLiteralValidator() {}

sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/ConvertTzAdapter.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import org.opensearch.analytics.spi.ScalarFunctionAdapter;
2626

2727
import java.time.DateTimeException;
28+
import java.time.LocalDateTime;
2829
import java.time.ZoneId;
30+
import java.time.format.DateTimeParseException;
2931
import java.util.ArrayList;
3032
import java.util.List;
3133
import java.util.Locale;
@@ -79,9 +81,11 @@ private static RexNode foldInvalidTimestampLiteralToNull(
7981
String value = literal.getValueAs(String.class);
8082
if (value == null) return null;
8183
try {
82-
java.time.LocalDateTime.parse(value.replace(' ', 'T'));
84+
LocalDateTime.parse(value.replace(' ', 'T'));
8385
return null;
84-
} catch (java.time.format.DateTimeParseException ignored) {}
86+
} catch (DateTimeParseException ignored) {
87+
// unparseable timestamp literal -> NULL row (in line with sql opensearch plugin contract; see ConvertTZFunctionIT)
88+
}
8589
return rexBuilder.makeNullLiteral(resultType);
8690
}
8791

sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DataFusionFragmentConvertor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,8 @@ public byte[] attachFragmentOnTop(RelNode fragment, byte[] innerBytes) {
456456
}
457457

458458
private byte[] convertToSubstrait(RelNode fragment) {
459+
// TODO: move rewriters that don't touch substrait-specific classes up to the analytics-engine
460+
// layer so other backends can reuse them.
459461
RelNode preprocessed = UntypedNullPreprocessor.rewrite(fragment);
460462
preprocessed = PplAggregateCallRewriter.rewrite(preprocessed);
461463
preprocessed = PplWindowCallRewriter.rewrite(preprocessed);

sandbox/plugins/analytics-backend-datafusion/src/main/java/org/opensearch/be/datafusion/DatetimeLiteralValidator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.Locale;
1919

2020
/** Plan-time validation for string-literal datetime operands; rejects malformed input with the format-hint message. */
21+
// TODO: move this validation into the analytics-engine Marking phase so it runs once across the whole plan with full operator context.
2122
final class DatetimeLiteralValidator {
2223

2324
private DatetimeLiteralValidator() {}

0 commit comments

Comments
 (0)