DsqlCompilerScratch.h (Firebird-3.0.2.32703-0.tar.bz2) | : | DsqlCompilerScratch.h (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 205 | skipping to change at line 205 | |||
void resetTriggerContextStack() | void resetTriggerContextStack() | |||
{ | { | |||
context->clear(); | context->clear(); | |||
contextNumber = 0; | contextNumber = 0; | |||
} | } | |||
void addCTEs(WithClause* withClause); | void addCTEs(WithClause* withClause); | |||
SelectExprNode* findCTE(const Firebird::MetaName& name); | SelectExprNode* findCTE(const Firebird::MetaName& name); | |||
void clearCTEs(); | void clearCTEs(); | |||
void checkUnusedCTEs() const; | void checkUnusedCTEs(); | |||
// hvlad: each member of recursive CTE can refer to CTE itself (only once ) via | // hvlad: each member of recursive CTE can refer to CTE itself (only once ) via | |||
// CTE name or via alias. We need to substitute this aliases when process ing CTE | // CTE name or via alias. We need to substitute this aliases when process ing CTE | |||
// member to resolve field names. Therefore we store all aliases in order of | // member to resolve field names. Therefore we store all aliases in order of | |||
// occurrence and later use it in backward order (since our parser is rig ht-to-left). | // occurrence and later use it in backward order (since our parser is rig ht-to-left). | |||
// Also we put CTE name after all such aliases to distinguish aliases for | // Also we put CTE name after all such aliases to distinguish aliases for | |||
// different CTE's. | // different CTE's. | |||
// We also need to repeat this process if main select expression contains union with | // We also need to repeat this process if main select expression contains union with | |||
// recursive CTE | // recursive CTE | |||
void addCTEAlias(const Firebird::string& alias) | void addCTEAlias(const Firebird::string& alias) | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added |