public class DBObjectSearchPlanV8 extends DBObjectSearchPlan
MAX_JOINS, RESOLUTION_ARCHIVE_CACHE, RESOLUTION_DB_SEARCH, RESOLUTION_FIELD_CACHE, RESOLUTION_FIELD_CACHE_IN, RESOLUTION_FULL_SEARCH, RESOLUTION_LINKAGE_CACHE, RESOLUTION_LOAD_CACHE_IN, RESOLUTION_REVERSED, RESOLUTION_SPLIT_SEARCH
ALWAYS_LOAD_FIELD_CACHE_LIMIT, DEFAULT_TIMEOUT, maxFullListInsteadOfAffirmativeRestriction, maxFullRecordScan, query, RESOLUTION_KNOWN_TO_FAIL, RESOLUTION_UNKOWN
Constructor and Description |
---|
DBObjectSearchPlanV8(DBQuery query)
Creates a new Search plan
|
Modifier and Type | Method and Description |
---|---|
void |
addSqlUsed(java.lang.String sql)
INTERNAL ONLY record a SQL statement that was used.
|
void |
addTranslateMap(java.util.Map<java.lang.String,TranslateClause> translateMap)
Add the list of items
|
boolean |
archiveSearch(LayerSearchResult lsr)
do an archive search
|
protected LayerPlan |
createLayerPlan(DBClass dbClass,
VirtualDB layer,
DBCriteria criteria,
boolean useIndex)
Create a database layer plan
|
void |
doLayerSearch(LayerSearchResult lsr) |
protected PossibleRowsHolder |
doReverseSearch(DBPathClause bestClause,
DBClause[] clauses)
perform a reverse search
|
int |
getMatchEstimatePerRow()
the estimated number of rows loaded per row.
|
protected static boolean |
isUsingDefaultSearchPlan(DataSource ds)
Reads and returns the value of USE_SUPER_SEARCH_PLAN system property/or DBSystemProperty
This is just a feature toggle only.
|
java.lang.String[] |
listSqlUsed()
List the SQL statements used.
|
LayerPlan |
makeLayerPlan(VirtualDB layer)
The layer plan for selecting the data
|
PossibleRowsHolder |
tryKeyWord()
If the criteria contains the MATCHES symbol then try searching the key words index if
present and the field is marked as "key words" and the index is clean.
|
PossibleRowsHolder |
tryPlanCache()
CAN YOU HANDLE THIS QUERY ? If so return the possible rows here.
|
PossibleRowsHolder |
tryReverseSearch(DBClause usedClause,
long currentLoadRows)
Try to resolve the search by reversing the clauses.
|
PossibleRowsHolder |
trySplitOR()
Split up OR clauses.
|
PossibleRowsHolder |
trySplitSearch()
deal with OR clauses
|
boolean |
useClauseInsteadOfFullScan(long estimatedClauseRows)
only do this search if we are going to limit loading of records.
|
boolean |
useFullSearch()
Should we try the full search option ?
|
boolean |
useLinkageCache()
Should we use linkageCache for this search ?
|
addClauseUsed, checkThirdPhase, checkTimeout, cleanCriteria, getBottomLayer, getCriteria, getDataBase, getEstimatedDatabaseRows, getEstimatedMatchRows, getEstimatedMatchRows, getFirstClausedUsed, getMaxFullListInsteadOfAffirmativeRestriction, getMaxFullRecordScan, getMaximumRequiredRows, getQuery, getResolution, getSecondClausedUsed, getStartTime, getThirdClausedUsed, getTopLayer, isLayerExcluded, setForcePhaseThree, setMasterPlan, setMaxFullListInsteadOfAffirmativeRestriction, setMaxFullRecordScan, setMaximumRequiredRows, setResolution, useCache, willSearchFail
public DBObjectSearchPlanV8(@Nonnull DBQuery query)
query
- The query@CheckReturnValue @Nullable public PossibleRowsHolder tryPlanCache() throws java.lang.Exception
tryPlanCache
in class SearchPlan
java.lang.Exception
- A serious problempublic PossibleRowsHolder tryKeyWord() throws java.lang.Exception
tryKeyWord
in class DBObjectSearchPlan
java.lang.Exception
- a serious problem.public PossibleRowsHolder trySplitOR() throws java.lang.Exception
trySplitOR
in class DBObjectSearchPlan
java.lang.Exception
- A serious problempublic void doLayerSearch(@Nonnull LayerSearchResult lsr) throws java.lang.Exception
doLayerSearch
in class SearchPlan
lsr
- the resultjava.lang.Exception
- a serious problempublic boolean archiveSearch(LayerSearchResult lsr) throws java.lang.Exception
archiveSearch
in class SearchPlan
lsr
- the resultjava.lang.Exception
public int getMatchEstimatePerRow()
public java.lang.String[] listSqlUsed()
listSqlUsed
in class DBObjectSearchPlan
public void addSqlUsed(java.lang.String sql)
sql
- the statement to record.public boolean useFullSearch() throws java.lang.Exception
useFullSearch
in class DBObjectSearchPlan
java.lang.Exception
- A serious problempublic PossibleRowsHolder trySplitSearch() throws java.lang.Exception
trySplitSearch
in class DBObjectSearchPlan
java.lang.Exception
- a serious problempublic PossibleRowsHolder tryReverseSearch(DBClause usedClause, long currentLoadRows) throws java.lang.Exception
SELECT * FROM Dilution WHERE instrument.ric like 'A%' | | V Step 1 ------- SELECT id FROM Asset WHERE ric like 'A%' Step 2 ------- SELECT * FROM Dilution WHERE instrument IS IN ( 1@10~10 ....)
tryReverseSearch
in class DBObjectSearchPlan
usedClause
- the clause has been used.currentLoadRows
- current estimatejava.lang.Exception
- A serious problempublic boolean useClauseInsteadOfFullScan(long estimatedClauseRows)
useClauseInsteadOfFullScan
in class DBObjectSearchPlan
estimatedClauseRows
- the estimate of the rows for this clause.protected PossibleRowsHolder doReverseSearch(DBPathClause bestClause, DBClause[] clauses) throws java.lang.Exception
bestClause
- best clauseclauses
- the clausesjava.lang.Exception
- a serious problempublic boolean useLinkageCache()
useLinkageCache
in class DBObjectSearchPlan
public LayerPlan makeLayerPlan(VirtualDB layer) throws java.lang.Exception
layer
- The layerjava.lang.Exception
- A serious problemprotected LayerPlan createLayerPlan(DBClass dbClass, VirtualDB layer, DBCriteria criteria, boolean useIndex) throws java.lang.Exception
dbClass
- The class to be searchedlayer
- The database layercriteria
- The restrictionuseIndex
- Should we use the indexes ?java.lang.Exception
- a serious problem.public void addTranslateMap(java.util.Map<java.lang.String,TranslateClause> translateMap)
DBObjectSearchPlan
addTranslateMap
in class DBObjectSearchPlan
translateMap
- the map of alias@CheckReturnValue @Nonnull protected static boolean isUsingDefaultSearchPlan(@Nonnull DataSource ds)
ds
- stSoftware Copyright © 2001-2014 stSoftware All Rights Reserved.