MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / createFromField

Method createFromField

src/dsql/ExprNodes.cpp:5008–5037  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5006}
5007
5008ValueExprNode* DefaultNode::createFromField(thread_db* tdbb, CompilerScratch* csb,
5009 StreamType* map, jrd_fld* fld)
5010{
5011 if (fld->fld_generator_name.hasData())
5012 {
5013 // Make a (next value for <generator name>) expression.
5014
5015 GenIdNode* const genNode = FB_NEW_POOL(csb->csb_pool) GenIdNode(
5016 csb->csb_pool, (csb->blrVersion == 4), fld->fld_generator_name, NULL, true, true);
5017
5018 bool sysGen = false;
5019 if (!MET_load_generator(tdbb, genNode->generator, &sysGen, &genNode->step))
5020 status_exception::raise(Arg::Gds(isc_gennotdef) << Arg::Str(fld->fld_generator_name));
5021
5022 if (sysGen)
5023 status_exception::raise(Arg::Gds(isc_cant_modify_sysobj) << "generator" << fld->fld_generator_name);
5024
5025 return genNode;
5026 }
5027 else if (fld->fld_default_value)
5028 {
5029 StreamMap localMap;
5030 if (!map)
5031 map = localMap.getBuffer(STREAM_MAP_LENGTH);
5032
5033 return NodeCopier(csb->csb_pool, csb, map).copy(tdbb, fld->fld_default_value);
5034 }
5035 else
5036 return NullNode::instance();
5037}
5038
5039string DefaultNode::internalPrint(NodePrinter& printer) const
5040{

Callers

nothing calls this directly

Calls 8

GenIdNodeClass · 0.85
raiseFunction · 0.85
GdsClass · 0.85
StrClass · 0.85
NodeCopierClass · 0.85
hasDataMethod · 0.45
getBufferMethod · 0.45
copyMethod · 0.45

Tested by

no test coverage detected