Package gudusoft.gsqlparser.stmt
Class TSelectSqlStatement
Object
gudusoft.gsqlparser.nodes.TParseTreeNode
gudusoft.gsqlparser.TCustomSqlStatement
gudusoft.gsqlparser.stmt.TSelectSqlStatement
- All Implemented Interfaces:
IRelation,Visitable,Iterator<TSourceToken>
- Direct Known Subclasses:
THiveFromQuery
Class
query specification including following clause:
query expression including all elements in query specification and following clause:
It is a component of the select-statement, the INSERT statement, and the CREATE VIEW statement. And a full-select that is enclosed in parentheses is sometimes called a sub-query.
select statement including all elements in query expression and following clause:
Use
TSelectSqlStatement represents query specification, query expression and select statement.
query specification including following clause:
- select list
getResultColumnList(boolean) - from clause
TCustomSqlStatement.joins - where clause
TCustomSqlStatement.getWhereClause() - group clause
getGroupByClause() - having clause
getGroupByClause()
query expression including all elements in query specification and following clause:
- order by clause
getOrderbyClause() - offset clause
getOffsetClause() - for clause
It is a component of the select-statement, the INSERT statement, and the CREATE VIEW statement. And a full-select that is enclosed in parentheses is sometimes called a sub-query.
select statement including all elements in query expression and following clause:
- compute clause
getComputeClause() - for update clause
getForUpdateClause() - optimizer hint
- ctes
TCustomSqlStatement.getCteList()
Use
isCombinedQuery() to check whether UNION, EXCEPT and INTERSECT operators is used.
If returns true, use getLeftStmt() and getRightStmt() to get query expression.
You need to check isCombinedQuery() recursively, all clauses of TSelectSqlStatement
only available when this function returns false.-
Nested Class Summary
Nested classes/interfaces inherited from class gudusoft.gsqlparser.TCustomSqlStatement
TCustomSqlStatement.SqlNormalizationProfile -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intFields inherited from class gudusoft.gsqlparser.TCustomSqlStatement
dummytag, fromClause, fromSourceJoin, fromSourceTable, isctequery, isparsed, joins, parser, plsqlparser, rootNode, semicolonended, sourcetokenlist, sqlstatementtype, stmtScope, tablesFields inherited from class gudusoft.gsqlparser.nodes.TParseTreeNode
dbvendor, doubleLinkedTokenListToString, nodeActionAppend, nodeActionInsert, nodeActionRemove, nodeActionUnknown, nodeActionUpdate, nodeActionUpdateText, nodeChangeEndToken, nodeChangeStartToken -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAccept a visitorvoidAccept visitor to visit this class.voidaddColumnInSelectListToSQLEnv(TSQLTable sqlTable) addCondition(String condition) this function is alias of addWhereClauseaddConditionOR(String condition) addOrderBy(String orderByStr) Add an order by clause to this class.addWhereClause(String condition) addWhereClauseOR(String condition) protected TWhereClausedoAddWhereClause(String condition, boolean isAnd) intThis function is used internal.在 sql script 中,和该 relation 关联的 attribute。 select a from t; attribute a 就是 relation t 的 referenceAttribute, 如果没有 metadata and ddl, relation t 的 getAttributes() 应该可以推断出包含 a, 但 t 是否还包含其他的 attribute 就无从得知。The last token of the nodeFetch first/next clauseOracle hierarchical_query_clausegetHint()Hint for Oracle and MySQLDeprecated.Valid whengetSetOperator()is not setOperator_none.MySQL,PostgreSQL limit clausePostgreSQL, for update of, for read only.Hive, from ...Offset clause.Deprecated.As of 2.0.4.5, replaced bygetHint()intintIn select statement, this method returns Items in select_list.getResultColumnList(boolean useColumnsFromLeftmost) Valid whengetSetOperator()is not setOperator_none.intDeprecated.As of v1.6.4.2, usegetSetOperatorType()andisAll()instead.DB2 value clausebooleanisAll()booleanbooleanDetermine whether The UNION, EXCEPT and INTERSECT operators were used.booleanbooleanbooleanbooleanbooleanbooleanbooleansearchColumnInResultSet(TObjectName pColumn, boolean pMustIn) search column in the select list Internal function, DON'T call it explicitly.voidsetAll(boolean all) voidsetChildOfCombinedQuery(boolean childOfCombinedQuery) voidsetClusterBy(TClusterBy clusterBy) voidsetComputeClause(TComputeClause computeClause) voidsetConsume(boolean consume) voidsetDistributeBy(TDistributeBy distributeBy) voidsetExpandOnClause(TExpandOnClause expandOnClause) voidsetFetchFirstClause(TFetchFirstClause fetchFirstClause) voidsetForUpdateClause(TForUpdate forUpdateClause) voidsetGroupByClause(TGroupBy groupByClause) voidsetHierarchicalClause(THierarchical hierarchicalClause) voidsetHintClause(THintClause hintClause) voidsetHiveHintClause(THiveHintClause hiveHintClause) voidsetIntoClause(TIntoClause intoClause) voidsetIntoTableClause(TIntoTableClause intoTableClause) voidsetIsolationClause(TIsolationClause isolationClause) voidsetLeftStmt(TSelectSqlStatement leftStmt) voidsetLimitClause(TLimitClause limitClause) voidsetLockingClauses(TPTNodeList<TLockingClause> lockingClauses) voidsetOffsetClause(TOffsetClause offsetClause) voidsetOptionClause(TOptionClause optionClause) voidsetOracleHint(String oracleHint) voidsetOrderbyClause(TOrderBy newOrderbyClause) voidsetParenthesisCount(int parenthesisCount) voidsetParenthesisCountBeforeOrder(int parenthesisCountBeforeOrder) voidsetQualifyClause(TQualifyClause qualifyClause) voidsetQueryOfCTE(boolean queryOfCTE) voidsetRightStmt(TSelectSqlStatement rightStmt) voidsetSampleClause(TSampleClause sampleClause) voidsetSelectDistinct(TSelectDistinct selectDistinct) voidsetSelectModifiers(ArrayList<TSelectModifier> selectModifiers) voidsetSelectToken(TSourceToken selectToken) voidsetSetOperator(int setOperator) voidsetSetOperatorType(ESetOperatorType setOperatorType) voidvoidsetStarColumnPushedDown(boolean starColumnPushedDown) voidsetSubQueryInFromClauseCanUseParentSelectAsEnclosingScope(boolean subQueryInFromClauseCanUseParentSelectAsEnclosingScope) voidsetTeradataWithClause(TTeradataWithClause teradataWithClause) voidsetTimeTravel(TTimeTravel timeTravel) voidsetTransformClause(THiveTransformClause transformClause) voidsetValueClause(TValueClause valueClause) voidsetWindowClause(TWindowClause windowClause) Methods inherited from class gudusoft.gsqlparser.TCustomSqlStatement
addToTables, analyzeFromTable, analyzeFromTable, analyzeJoin, analyzeTablename, analyzeTableOrJoin, asCanonical, checkNonQualifiedColumnReferenceInSubQueryOfUplevelStmt, clearError, computeSqlHash, dochecksyntax, findTable, fireOnMetaDatabaseTableColumn, getAncestorStmt, getColumnsInTable, getColumnsInTable, getCteIncludeThisStmt, getCteList, getDaxFunctionStack, getEndlabelName, getErrorCount, getErrormessage, getFirstPhysicalTable, getFrameStack, getFromSourceJoin, getFromSourceTable, getGlobalScope, getIndexColumns, getJoins, getLabelName, getOrphanColumns, getOutputClause, getParentObjectName, getParentStmt, getQueryId, getRelationName, getRelations, getReturningClause, getSqlEnv, getSqlHash, getSqlHash, getStatements, getStmtScope, getSymbolTable, getSyntaxErrors, getSyntaxHints, getTables, getTargetTable, getTokenList, getTopClause, getTopStatement, getUsingVariableList, getVariableStack, getWhereClause, isathenaplsql, isBigQueryplsql, isdatabricksplsql, isGaussDBStoredProcedure, isgreeplumplsql, isnzplsql, isoracleplsql, ispgplsql, isprestoplsql, issnowflakeplsql, isTableACTE, isverticaplsql, linkColumnReferenceToTable, linkColumnToTable, linkToFirstTable, locateVariableOrParameter, locateVariableOrParameter, OracleStatementCanBeSeparatedByBeginEndPair, parseerrormessagehandle, parsestatement, parsestatement, searchCTEList, searchDaxVariableInStack, searchFunctionInSQLEnv, setAlreadyAddToParent, setCteIncludeThisStmt, setCteList, setEndlabelName, setFrameStack, setFromClause, setLabelName, setOutputClause, setParentStmt, setParentStmtToNull, setQueryId, setResultColumnList, setReturningClause, setSqlHash, setStmtScope, setTargetTable, setTopClause, setUsingVariableList, setVariableStack, setWhereClause, size, toNormalizedSql, toScript, VerticaStatementCanBeSeparatedByBeginEndPairMethods inherited from class gudusoft.gsqlparser.nodes.TParseTreeNode
addAllMyTokensToTokenList, addToTokenChain, appendNewNode, calculateTokenCount, doAppendNewNode, doParse, fastSetString, getAnchorNode, getColumnNo, getCommentAfterNode, getCommentBeforeNode, getCompactString, getDummyTag, getEvaluateDatatype, getEvalValue, getGsqlparser, getLineNo, getLocation, getMd5, getNodeStatus, getNodeType, getPlainText, getStartToken, getTokenCount, hasNext, init, init, init, init, init, init, insertAfterAToken, insertNewNodeBeforeMe, isChanged, isTokensInChain, next, refreshAllNodesTokenCount, remove, removeAllMyTokensFromTokenList, removeTokens, removeTokensBetweenNodes, removeTokensBetweenToken, replaceWithNewNode, resetIterator, setAnchorNode, setChanged, setDummyTag, setEndToken, setEndToken, setEndToken, setEndToken, setEndToken, setEndTokenDirectly, setEvaluateDatatype, setEvalValue, setGsqlparser, setIncludingComment, setLocation, setNewSubNode, setNodeStatus, setNodeType, setParent, setPlainText, setStartToken, setStartToken, setStartToken, setStartToken, setStartTokenDirectly, setString, setString2, subNodeInNode, toString, toString2Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
SET_OPERATOR_NONE
- See Also:
-
setOperator_union
- See Also:
-
setOperator_unionall
- See Also:
-
SET_OPERATOR_UNIONDISTINCT
- See Also:
-
setOperator_intersect
- See Also:
-
setOperator_intersectall
- See Also:
-
SET_OPERATOR_INTERSECTDISTINCT
- See Also:
-
setOperator_minus
- See Also:
-
setOperator_minusall
- See Also:
-
SET_OPERATOR_MINUSDISTINCT
- See Also:
-
setOperator_except
- See Also:
-
setOperator_exceptall
- See Also:
-
SET_OPERATOR_EXCEPTDISTINCT
- See Also:
-
-
Constructor Details
-
TSelectSqlStatement
-
-
Method Details
-
getEndToken
Description copied from class:TParseTreeNodeThe last token of the node- Overrides:
getEndTokenin classTParseTreeNode- Returns:
- the last token of node
-
setSubQueryInFromClauseCanUseParentSelectAsEnclosingScope
public void setSubQueryInFromClauseCanUseParentSelectAsEnclosingScope(boolean subQueryInFromClauseCanUseParentSelectAsEnclosingScope) -
isSubQueryInFromClauseCanUseParentSelectAsEnclosingScope
-
isStarColumnPushedDown
-
setStarColumnPushedDown
-
getAttributes
在 sql script 中,和该 relation 关联的 attribute。 select a from t; attribute a 就是 relation t 的 referenceAttribute, 如果没有 metadata and ddl, relation t 的 getAttributes() 应该可以推断出包含 a, 但 t 是否还包含其他的 attribute 就无从得知。- Specified by:
getAttributesin interfaceIRelation- Overrides:
getAttributesin classTCustomSqlStatement- Returns:
-
getMultiSelectStatements
Hive, from ... select, select,...
Multiple select statement in Hive from query syntax- Returns:
- Multiple select statement in Hive from query syntax
-
setClusterBy
-
getClusterBy
-
setConsume
-
isConsume
-
getHiveBodyList
Deprecated.since 2.6.3.5, please usegetMultiSelectStatements()to retrieve multimple select statement in Hive from query ... select, select, ...- Returns:
-
setSelectModifiers
-
getSelectModifiers
-
setTimeTravel
-
setHintClause
-
getTimeTravel
-
getHintClause
-
setFetchFirstClause
-
setParenthesisCount
-
setParenthesisCountBeforeOrder
-
setAll
-
setSetOperatorType
-
setWindowClause
-
setLockingClauses
-
setSelectDistinct
-
setExpandOnClause
-
setSetOperator
-
setLeftStmt
-
setRightStmt
-
setValueClause
-
setOracleHint
-
setHiveHintClause
-
setTransformClause
-
setDistributeBy
-
setIntoClause
-
setOrderbyClause
-
setQualifyClause
-
setSampleClause
-
setTeradataWithClause
-
setForUpdateClause
-
setComputeClause
-
setGroupByClause
-
setHierarchicalClause
-
setLimitClause
-
setOffsetClause
-
setOptionClause
-
setIsolationClause
-
setSortBy
-
setIntoTableClause
-
getParenthesisCountBeforeOrder
-
getParenthesisCount
-
setQueryOfCTE
-
isQueryOfCTE
-
getOffsetClause
Offset clause.
OFFSET 2 ROWS FETCH NEXT 4 ROWS ONLY;
- Returns:
offset clause
-
getFetchFirstClause
Fetch first/next clause
OFFSET 2 ROWS FETCH NEXT 4 ROWS ONLY;
- Returns:
fetch first/next clause
-
getOptionClause
- Returns:
sql server option clause- See Also:
-
getIsolationClause
- Returns:
isolation clause
-
getSortBy
- Returns:
Hive sort by clause
-
getIntoTableClause
- Returns:
informix into table clause
-
setSelectToken
-
getSelectToken
- Returns:
- SELECT token of this query.
-
isAll
-
isSetOpDistinct
-
getSetOperatorType
-
getWindowClause
- Returns:
window clause.
-
getLockingClauses
PostgreSQL, for update of, for read only.- Returns:
- list of
TLockingClause
-
getSelectDistinct
- Returns:
distinct clause
-
getIntoClause
- Returns:
into clause
-
getOrderbyClause
- Returns:
order by clause
-
getQualifyClause
- Returns:
teradata qualify clause
-
getTeradataWithClause
- Returns:
Teradata with clause
-
getSampleClause
- Returns:
SQL Server sample clause
-
getForUpdateClause
- Returns:
for update clause
-
getComputeClause
- Returns:
SQL Server compute clause
-
getGroupByClause
- Returns:
group by clause and having clause
-
getHierarchicalClause
Oracle hierarchical_query_clause- Returns:
Oracle hierarchical_query_clause
-
getLimitClause
MySQL,PostgreSQL limit clause- Returns:
MySQL,PostgreSQL limit clause
-
getExpandOnClause
- Returns:
Teradata expand on clause
-
getSetOperator
Deprecated.As of v1.6.4.2, usegetSetOperatorType()andisAll()instead.The set operators UNION, EXCEPT, and INTERSECT correspond to the relational operators union, difference, and intersection.- Returns:
- set operator of this statement.If a set operator is not used, setOperator_none will be returned. otherwise, set operand can be fetched by using getLeftStmt() and getRightStmt().
-
getLeftStmt
Valid whengetSetOperator()is not setOperator_none.- Returns:
- left side query expression
-
getFarLeftStmt
-
getRightStmt
Valid whengetSetOperator()is not setOperator_none.- Returns:
- right side query expression.
-
isValueClause
-
getHint
Hint for Oracle and MySQL- Returns:
- hint string
-
getOracleHint
Deprecated.As of 2.0.4.5, replaced bygetHint() -
getHiveHintClause
- Returns:
Hive hint clause
-
getTransformClause
- Returns:
Hive from clause
-
getDistributeBy
- Returns:
Hive distribute by clause
-
getValueClause
DB2 value clause- Returns:
DB2 value clause
-
setChildOfCombinedQuery
-
isChildOfCombinedQuery
-
getExpandedResultColumns
- Overrides:
getExpandedResultColumnsin classTCustomSqlStatement
-
getFlattenedSelects
-
doParseStatement
This function is used internal. DON'T call it explicitly.- Overrides:
doParseStatementin classTCustomSqlStatement- Parameters:
psql- input query.- Returns:
- zero means there is no syntax error detected.
-
isCombinedQuery
Determine whether The UNION, EXCEPT and INTERSECT operators were used.- Returns:
- true if one of those operators were used.
-
accept
Description copied from class:TParseTreeNodeAccept a visitor- Specified by:
acceptin interfaceVisitable- Overrides:
acceptin classTParseTreeNode- Parameters:
v- visitor is a descendant class ofTParseTreeVisitor
-
acceptChildren
Accept visitor to visit this class.- Specified by:
acceptChildrenin interfaceVisitable- Overrides:
acceptChildrenin classTParseTreeNode- Parameters:
v- user defined visitor.
-
addOrderBy
Add an order by clause to this class.- Parameters:
orderByStr- new order by string- Returns:
- added order by clause.
-
addCondition
this function is alias of addWhereClause- Parameters:
condition- new condition- Returns:
- new where clause
-
addConditionOR
-
addWhereClause
- Overrides:
addWhereClausein classTCustomSqlStatement- Returns:
-
addWhereClauseOR
-
doAddWhereClause
-
getFromClause
- Overrides:
getFromClausein classTCustomSqlStatement
-
getResultColumnList
-
getResultColumnList
Description copied from class:TCustomSqlStatementIn select statement, this method returns Items in select_list. Can be *, expr, and name.*
In update statement, this method returns assignments in set clause.- Overrides:
getResultColumnListin classTCustomSqlStatement- Returns:
- select list of select statement or assignments of update statement.
-
getColumnsInFromClause
-
addColumnInSelectListToSQLEnv
-
searchColumnInResultSet
search column in the select list Internal function, DON'T call it explicitly.- Parameters:
pColumn-pMustIn-- Returns:
- true if found.
-
getMultiSelectStatements()to retrieve multimple select statement in Hive from query ...