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
The 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
The field Property.
|
int |
narg
The 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 CONTAINS 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
CONTAINS 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 complexity.public void toRPN()
public boolean containsWith(java.lang.String schema,
java.util.Optional<Dialect.WeightAggregator> aggregator,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
CONTAINS UDF call.schema - The schema name.aggregator - The aggregate helper.weights - The 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)
CONTAINS UDF call (no word tables).schema - The schema name.dialect - The database dialect.weights - The holder for ORDER BY components (used for implicit sorting).sb - The output buffer.private void containsCTE4UDF(java.lang.String schema,
Dialect dialect,
java.lang.StringBuilder weights,
java.lang.StringBuilder sb)
CONTAINS (no word tables).schema - The schema name.dialect - The database dialect.weights - The holder for ORDER BY components (used for implicit sorting).sb - The output buffer.private 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 - The 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 - The output buffer.walias - The word table alias.andTerm - The list of tokens in the AND term of the CNF.caseSensitive - Flag indicating that field is case-sensitive.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)
weights - The holder for ORDER BY components (used for implicit sorting).sb - The output buffer.aggregate - The aggregate wrapper.walias - The word table alias.andTerm - The list of tokens in the AND term of the CNF.caseSensitive - Flag indicating that field is case-sensitive.