| 849 | |
| 850 | |
| 851 | class GenIdNode final : public TypedNode<ValueExprNode, ExprNode::TYPE_GEN_ID> |
| 852 | { |
| 853 | public: |
| 854 | GenIdNode(MemoryPool& pool, bool aDialect1, |
| 855 | const MetaName& name, |
| 856 | ValueExprNode* aArg, |
| 857 | bool aImplicit, bool aIdentity); |
| 858 | |
| 859 | static DmlNode* parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb, const UCHAR blrOp); |
| 860 | |
| 861 | virtual void getChildren(NodeRefsHolder& holder, bool dsql) const |
| 862 | { |
| 863 | ValueExprNode::getChildren(holder, dsql); |
| 864 | holder.add(arg); |
| 865 | } |
| 866 | |
| 867 | virtual Firebird::string internalPrint(NodePrinter& printer) const; |
| 868 | virtual ValueExprNode* dsqlPass(DsqlCompilerScratch* dsqlScratch); |
| 869 | virtual void setParameterName(dsql_par* parameter) const; |
| 870 | virtual bool setParameterType(DsqlCompilerScratch* dsqlScratch, |
| 871 | std::function<void (dsc*)> makeDesc, bool forceVarChar); |
| 872 | virtual void genBlr(DsqlCompilerScratch* dsqlScratch); |
| 873 | virtual void make(DsqlCompilerScratch* dsqlScratch, dsc* desc); |
| 874 | |
| 875 | virtual bool deterministic() const |
| 876 | { |
| 877 | return false; |
| 878 | } |
| 879 | |
| 880 | virtual void getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc); |
| 881 | virtual ValueExprNode* copy(thread_db* tdbb, NodeCopier& copier) const; |
| 882 | virtual bool dsqlMatch(DsqlCompilerScratch* dsqlScratch, const ExprNode* other, bool ignoreMapCast) const; |
| 883 | virtual bool sameAs(const ExprNode* other, bool ignoreStreams) const; |
| 884 | virtual ValueExprNode* pass1(thread_db* tdbb, CompilerScratch* csb); |
| 885 | virtual ValueExprNode* pass2(thread_db* tdbb, CompilerScratch* csb); |
| 886 | virtual dsc* execute(thread_db* tdbb, Request* request) const; |
| 887 | |
| 888 | public: |
| 889 | GeneratorItem generator; |
| 890 | NestConst<ValueExprNode> arg; |
| 891 | SLONG step; |
| 892 | const bool dialect1; |
| 893 | |
| 894 | private: |
| 895 | bool sysGen; |
| 896 | const bool implicit; |
| 897 | const bool identity; |
| 898 | }; |
| 899 | |
| 900 | |
| 901 | class InternalInfoNode final : public TypedNode<ValueExprNode, ExprNode::TYPE_INTERNAL_INFO> |
no outgoing calls
no test coverage detected