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_SEARCHALWAYS_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, willSearchFailpublic DBObjectSearchPlanV8(@Nonnull
DBQuery query)
query - The query@CheckReturnValue @Nullable public PossibleRowsHolder tryPlanCache() throws java.lang.Exception
tryPlanCache in class SearchPlanjava.lang.Exception - A serious problempublic PossibleRowsHolder tryKeyWord() throws java.lang.Exception
tryKeyWord in class DBObjectSearchPlanjava.lang.Exception - a serious problem.public PossibleRowsHolder trySplitOR() throws java.lang.Exception
trySplitOR in class DBObjectSearchPlanjava.lang.Exception - A serious problempublic void doLayerSearch(@Nonnull
LayerSearchResult lsr)
throws java.lang.Exception
doLayerSearch in class SearchPlanlsr - the resultjava.lang.Exception - a serious problempublic boolean archiveSearch(LayerSearchResult lsr) throws java.lang.Exception
archiveSearch in class SearchPlanlsr - the resultjava.lang.Exceptionpublic int getMatchEstimatePerRow()
public java.lang.String[] listSqlUsed()
listSqlUsed in class DBObjectSearchPlanpublic void addSqlUsed(java.lang.String sql)
sql - the statement to record.public boolean useFullSearch()
throws java.lang.Exception
useFullSearch in class DBObjectSearchPlanjava.lang.Exception - A serious problempublic PossibleRowsHolder trySplitSearch() throws java.lang.Exception
trySplitSearch in class DBObjectSearchPlanjava.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 DBObjectSearchPlanusedClause - the clause has been used.currentLoadRows - current estimatejava.lang.Exception - A serious problempublic boolean useClauseInsteadOfFullScan(long estimatedClauseRows)
useClauseInsteadOfFullScan in class DBObjectSearchPlanestimatedClauseRows - 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 DBObjectSearchPlanpublic 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)
DBObjectSearchPlanaddTranslateMap in class DBObjectSearchPlantranslateMap - the map of alias@CheckReturnValue
@Nonnull
protected static boolean isUsingDefaultSearchPlan(@Nonnull
DataSource ds)
ds - stSoftware Copyright © 2001-2014 stSoftware All Rights Reserved.