clintropolis commented on a change in pull request #9516: More efficient join
filter rewrites
URL: https://github.com/apache/druid/pull/9516#discussion_r393284473
##########
File path:
processing/src/main/java/org/apache/druid/segment/join/filter/JoinFilterAnalyzer.java
##########
@@ -635,4 +694,106 @@ private static boolean filterMatchesNull(Filter filter)
ValueMatcher valueMatcher =
filter.makeMatcher(ALL_NULL_COLUMN_SELECTOR_FACTORY);
return valueMatcher.matches();
}
+
+ private static JoinableClause isColumnFromJoin(
+ List<JoinableClause> joinableClauses,
+ String column
+ )
+ {
+ for (JoinableClause joinableClause : joinableClauses) {
+ if (joinableClause.includesColumn(column)) {
+ return joinableClause;
+ }
+ }
+
+ return null;
+ }
+
+ private static boolean isColumnFromPostJoinVirtualColumns(
+ List<VirtualColumn> postJoinVirtualColumns,
+ String column
+ )
+ {
+ for (VirtualColumn postJoinVirtualColumn : postJoinVirtualColumns) {
+ if (column.equals(postJoinVirtualColumn.getOutputName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean areSomeColumnsFromJoin(
+ List<JoinableClause> joinableClauses,
+ Collection<String> columns
+ )
+ {
+ for (String column : columns) {
+ if (isColumnFromJoin(joinableClauses, column) != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean areSomeColumnsFromPostJoinVirtualColumns(
+ List<VirtualColumn> postJoinVirtualColumns,
+ Collection<String> columns
+ )
+ {
+ for (String column : columns) {
+ if (isColumnFromPostJoinVirtualColumns(postJoinVirtualColumns, column)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static void splitVirtualColumns(
+ List<JoinableClause> joinableClauses,
+ final VirtualColumns virtualColumns,
+ final List<VirtualColumn> preJoinVirtualColumns,
+ final List<VirtualColumn> postJoinVirtualColumns
+ )
+ {
+ for (VirtualColumn virtualColumn : virtualColumns.getVirtualColumns()) {
+ if (areSomeColumnsFromJoin(joinableClauses,
virtualColumn.requiredColumns())) {
+ postJoinVirtualColumns.add(virtualColumn);
+ } else {
+ preJoinVirtualColumns.add(virtualColumn);
+ }
+ }
+ }
+
+ private static class RHSRewriteCandidate
Review comment:
nit: I think this should probably be named `RhsRewriteCandidate`
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]