| 2248 | |
| 2249 | |
| 2250 | class VariableNode final : public TypedNode<ValueExprNode, ExprNode::TYPE_VARIABLE> |
| 2251 | { |
| 2252 | public: |
| 2253 | explicit VariableNode(MemoryPool& pool); |
| 2254 | |
| 2255 | static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, const UCHAR blrOp); |
| 2256 | |
| 2257 | virtual Firebird::string internalPrint(NodePrinter& printer) const; |
| 2258 | virtual ValueExprNode* dsqlPass(DsqlCompilerScratch* dsqlScratch); |
| 2259 | virtual void setParameterName(dsql_par* parameter) const; |
| 2260 | virtual void genBlr(DsqlCompilerScratch* dsqlScratch); |
| 2261 | virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc); |
| 2262 | virtual bool dsqlMatch(DsqlCompilerScratch* dsqlScratch, const ExprNode* other, bool ignoreMapCast) const; |
| 2263 | |
| 2264 | void setDsqlDesc(const dsc& desc) |
| 2265 | { |
| 2266 | dsqlDesc = desc; |
| 2267 | } |
| 2268 | |
| 2269 | Request* getVarRequest(Request* request) const; |
| 2270 | |
| 2271 | virtual bool deterministic() const |
| 2272 | { |
| 2273 | return false; |
| 2274 | } |
| 2275 | |
| 2276 | virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); |
| 2277 | virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier) const; |
| 2278 | virtual ValueExprNode* pass1(thread_db* tdbb, CompilerScratch* csb); |
| 2279 | virtual ValueExprNode* pass2(thread_db* tdbb, CompilerScratch* csb); |
| 2280 | virtual dsc* execute(thread_db* tdbb, Request* request) const; |
| 2281 | |
| 2282 | public: |
| 2283 | MetaName dsqlName; |
| 2284 | NestConst<dsql_var> dsqlVar; |
| 2285 | NestConst<DeclareVariableNode> varDecl; |
| 2286 | NestConst<ItemInfo> varInfo; |
| 2287 | USHORT varId = 0; |
| 2288 | bool outerDecl = false; |
| 2289 | }; |
| 2290 | |
| 2291 | |
| 2292 | } // namespace |
no outgoing calls
no test coverage detected