private static class FqlToSqlConverter.ContainsRewriteData extends FqlToSqlConverter.FieldInfo
Modifier and Type | Field and Description |
---|---|
boolean |
alwaysFalse
the condition is always false (is empty or invalid)
|
java.util.List<java.lang.String> |
args
the holder for the generated query parameters
|
java.util.List<java.util.List<LogicalExpressionConverter.Term>> |
cnf
CNF representation of expr
|
java.lang.String |
cteName
CTE name
|
java.lang.String |
expr
CONTAINS UDF second argument value
|
java.lang.String |
extentTable
extent table (for extent field)
|
FQLAst |
fieldAst
Field AST
|
boolean |
forSorting
Flag that word index is used for implicit sorting of the result set
|
Property |
fp
field Property
|
int |
narg
argument index (if placeholder found)
|
private java.util.Map<java.lang.String,LogicalExpressionConverter.Term> |
terms
Distinct terms found in the expression
|
boolean |
useCTE
Flags that expression is good for using CTE
|
extent, fldName, tblAlias, tblMetaKey, tblName
Modifier | Constructor and Description |
---|---|
private |
ContainsRewriteData() |
Modifier and Type | Method and Description |
---|---|
private void |
containsCTE(java.lang.String schema,
java.util.Optional<Dialect.WeightAggregator> aggregator,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
Generate common table expression for CONTAINS.
|
private void |
containsCTE4UDF(java.lang.String schema,
Dialect dialect,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
Generate common table expression for CONTAINS (no word tables).
|
void |
containsQuery(java.lang.String schema,
java.lang.StringBuilder sb)
Generate a replacement for the CONTANS UDF call.
|
boolean |
containsWith(java.lang.String schema,
java.util.Optional<Dialect.WeightAggregator> aggregator,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
Generate a WITH clause for the CONTAINS UDF call.
|
void |
containsWith4UDF(java.lang.String schema,
Dialect dialect,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
Generate a WITH clause for the CONTANS UDF call (no word tables).
|
private void |
onClause(java.lang.StringBuilder sb,
java.lang.String walias,
java.util.List<LogicalExpressionConverter.Term> andTerm,
boolean caseSensitive)
Generate an ON clause for a CONTAINS UDF call replacement query.
|
void |
toCNF(boolean useMixedMode)
Convert 'expr' to CNF
|
void |
toRPN()
Validate 'expr' by converting to RPN
|
private void |
weights(java.lang.StringBuilder weights,
java.lang.StringBuilder sb,
java.util.function.BiConsumer<java.lang.StringBuilder,java.lang.Runnable> aggregate,
java.lang.String walias,
java.util.List<LogicalExpressionConverter.Term> andTerm,
boolean caseSensitive)
Generate a 'weight' column for a CONTAINS UDF call replacement query.
|
public FQLAst fieldAst
public java.lang.String cteName
public java.lang.String expr
public java.util.List<java.util.List<LogicalExpressionConverter.Term>> cnf
private java.util.Map<java.lang.String,LogicalExpressionConverter.Term> terms
public boolean useCTE
public int narg
public boolean alwaysFalse
public boolean forSorting
public java.util.List<java.lang.String> args
public Property fp
public java.lang.String extentTable
public void containsQuery(java.lang.String schema, java.lang.StringBuilder sb)
schema
- schema namesb
- output bufferpublic void toCNF(boolean useMixedMode)
useMixedMode
- set 'useCTE' flag based on the expression complexitypublic void toRPN()
public boolean containsWith(java.lang.String schema, java.util.Optional<Dialect.WeightAggregator> aggregator, java.lang.StringBuilder weights, java.lang.StringBuilder sb)
schema
- The schema name.aggregator
- The aggregate helper.weights
- holder for ORDER BY components (used for implicit sorting)sb
- The output buffer.true
if a new term in the WITH clause.public void containsWith4UDF(java.lang.String schema, Dialect dialect, java.lang.StringBuilder weights, java.lang.StringBuilder sb)
schema
- schema namedialect
- database dialectweights
- holder for ORDER BY components (used for implicit sorting)sb
- output bufferprivate void containsCTE4UDF(java.lang.String schema, Dialect dialect, java.lang.StringBuilder weights, java.lang.StringBuilder sb)
schema
- schema namedialect
- database dialectweights
- holder for ORDER BY components (used for implicit sorting)sb
- output bufferprivate void containsCTE(java.lang.String schema, java.util.Optional<Dialect.WeightAggregator> aggregator, java.lang.StringBuilder weights, java.lang.StringBuilder sb)
schema
- The schema name.aggregator
- The aggregate helper.weights
- holder for ORDER BY components (used for implicit sorting)sb
- The output buffer.private void onClause(java.lang.StringBuilder sb, java.lang.String walias, java.util.List<LogicalExpressionConverter.Term> andTerm, boolean caseSensitive)
sb
- output bufferwalias
- word table aliasandTerm
- list of tokens in the AND term of the CNFcaseSensitive
- Flag indicating that field is case sensitiveprivate void weights(java.lang.StringBuilder weights, java.lang.StringBuilder sb, java.util.function.BiConsumer<java.lang.StringBuilder,java.lang.Runnable> aggregate, java.lang.String walias, java.util.List<LogicalExpressionConverter.Term> andTerm, boolean caseSensitive)
weights
- holder for ORDER BY components (used for implicit sorting)sb
- output bufferaggregate
- aggregate wrapper;walias
- word table aliasandTerm
- list of tokens in the AND term of the CNFcaseSensitive
- Flag indicating that field is case sensitive