@@ -656,44 +656,45 @@ private static RelNode getIndexFullScanRelNode(LogicalProject project, LogicalDi
656
656
match = false ;
657
657
break outer ;
658
658
}
659
- if ( type instanceof StringType ) {
660
- Properties properties = result . matchIndexTable . getProperties ( );
661
- String json = ( String ) properties . get ( "text_fields" );
662
- if ( json == null ) {
663
- match = false ;
664
- break outer ;
665
- }
666
- try {
667
- ObjectMapper JSON = new ObjectMapper ( );
668
- JsonNode jsonNode = JSON . readTree ( json );
669
- Iterator < Map . Entry < String , JsonNode >> fields = jsonNode . fields () ;
670
- boolean flag = false ;
671
- while ( fields .hasNext ()) {
672
- Map . Entry < String , JsonNode > next = fields . next ( );
673
- json = json . replace ( next .getKey (), next . getKey (). toUpperCase () );
674
- JsonNode tokenizer = next . getValue (). get ( "tokenizer" );
675
- if ( tokenizer == null ) {
676
- match = false ;
677
- break outer ;
678
- }
679
- if (! next . getKey (). equalsIgnoreCase ( column . getName ())) {
680
- continue ;
681
- }
682
- flag = true ;
659
+ Properties properties = result . matchIndexTable . getProperties ();
660
+ String json = ( String ) properties . get ( "text_fields" );
661
+ if ( json == null ) {
662
+ match = false ;
663
+ break outer ;
664
+ }
665
+ try {
666
+ ObjectMapper JSON = new ObjectMapper ();
667
+ JsonNode jsonNode = JSON . readTree ( json );
668
+ Iterator < Map . Entry < String , JsonNode >> fields = jsonNode . fields ( );
669
+ boolean flag = false ;
670
+ while ( fields . hasNext ()) {
671
+ Map . Entry < String , JsonNode > next = fields .next ();
672
+ json = json . replace ( next . getKey (), next . getKey (). toUpperCase () );
673
+ JsonNode tokenizer = next .getValue (). get ( "tokenizer" );
674
+ if ( tokenizer == null ) {
675
+ match = false ;
676
+ break outer ;
677
+ }
678
+ if (! next . getKey (). equalsIgnoreCase ( column . getName ())) {
679
+ continue ;
680
+ }
681
+ flag = true ;
682
+ if ( type instanceof StringType ) {
683
683
String tokenType = next .getValue ().get ("tokenizer" ).get ("type" ).asText ();
684
684
if (!tokenType .equalsIgnoreCase ("raw" )) {
685
685
match = false ;
686
686
break outer ;
687
687
}
688
688
}
689
- if (!flag ) {
690
- match = false ;
691
- break ;
692
- }
693
- } catch (Exception e ) {
689
+ break ;
690
+ }
691
+ if (!flag ) {
694
692
match = false ;
695
- break outer ;
693
+ break ;
696
694
}
695
+ } catch (Exception e ) {
696
+ match = false ;
697
+ break outer ;
697
698
}
698
699
}
699
700
}
@@ -714,8 +715,8 @@ private static RelNode getIndexFullScanRelNode(LogicalProject project, LogicalDi
714
715
boolean needLookup = isNeedLookUp (finalSelection , tupleMapping , table .columns .size ());
715
716
716
717
RelNode relNode ;
717
- boolean flag = false ;
718
- String queryString = "" ;
718
+ // boolean flag = false;
719
+ // String queryString = "";
719
720
if (result .isDocumentIndex ) {
720
721
DocumentScanFilterVisitor documentScanFilterVisitor = new DocumentScanFilterVisitor (
721
722
scan .getCluster ().getRexBuilder (),
@@ -726,60 +727,62 @@ private static RelNode getIndexFullScanRelNode(LogicalProject project, LogicalDi
726
727
.build ()
727
728
);
728
729
DocumentScanFilterOb accept = rexNode .accept (documentScanFilterVisitor );
729
- flag = accept .isMatch ();
730
- queryString = accept .getQueryStr ();
731
- }
732
- if (result .isDocumentIndex && flag ) {
733
- LogicalDocumentScanFilter indexScan = new LogicalDocumentScanFilter (
734
- scan .getCluster (),
735
- scan .getTraitSet (),
736
- scan .getHints (),
737
- scan .getTable (),
738
- scan .getFilter (),
739
- finalSelection ,
740
- result .matchIndexTable ,
741
- result .indexId ,
742
- scan .isPushDown (),
743
- needLookup ,
744
- 0 ,
745
- queryString );
746
- relNode = new LogicalProject (
747
- project .getCluster (),
748
- project .getTraitSet (),
749
- project .getHints (),
750
- indexScan ,
751
- newProjectRexNodes ,
752
- project .getRowType (),
753
- project .getVariablesSet ()
754
- );
755
- } else {
756
- LogicalIndexFullScan indexFullScan = new LogicalIndexFullScan (
757
- scan .getCluster (),
758
- scan .getTraitSet (),
759
- scan .getHints (),
760
- scan .getTable (),
761
- scan .getFilter (),
762
- finalSelection ,
763
- result .matchIndexTable ,
764
- result .indexId ,
765
- result .selectionIxList ,
766
- scan .isPushDown (),
767
- needLookup ,
768
- 0 );
769
- if (RexUtil .isIdentity (newProjectRexNodes , scan .getSelectedType ())) {
770
- relNode = indexFullScan ;
771
- } else {
730
+ boolean flag = accept .isMatch ();
731
+ String queryString = accept .getQueryStr ();
732
+ if (flag ) {
733
+ LogicalDocumentScanFilter indexScan = new LogicalDocumentScanFilter (
734
+ scan .getCluster (),
735
+ scan .getTraitSet (),
736
+ scan .getHints (),
737
+ scan .getTable (),
738
+ scan .getFilter (),
739
+ finalSelection ,
740
+ result .matchIndexTable ,
741
+ result .indexId ,
742
+ scan .isPushDown (),
743
+ needLookup ,
744
+ 0 ,
745
+ queryString );
772
746
relNode = new LogicalProject (
773
747
project .getCluster (),
774
748
project .getTraitSet (),
775
749
project .getHints (),
776
- indexFullScan ,
750
+ indexScan ,
777
751
newProjectRexNodes ,
778
752
project .getRowType (),
779
753
project .getVariablesSet ()
780
754
);
755
+ return relNode ;
756
+ } else {
757
+ return null ;
781
758
}
782
759
}
760
+ LogicalIndexFullScan indexFullScan = new LogicalIndexFullScan (
761
+ scan .getCluster (),
762
+ scan .getTraitSet (),
763
+ scan .getHints (),
764
+ scan .getTable (),
765
+ scan .getFilter (),
766
+ finalSelection ,
767
+ result .matchIndexTable ,
768
+ result .indexId ,
769
+ result .selectionIxList ,
770
+ scan .isPushDown (),
771
+ needLookup ,
772
+ 0 );
773
+ if (RexUtil .isIdentity (newProjectRexNodes , scan .getSelectedType ())) {
774
+ relNode = indexFullScan ;
775
+ } else {
776
+ relNode = new LogicalProject (
777
+ project .getCluster (),
778
+ project .getTraitSet (),
779
+ project .getHints (),
780
+ indexFullScan ,
781
+ newProjectRexNodes ,
782
+ project .getRowType (),
783
+ project .getVariablesSet ()
784
+ );
785
+ }
783
786
return relNode ;
784
787
}
785
788
0 commit comments