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

Method make

src/dsql/ExprNodes.cpp:738–767  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

736} // anon namespace
737
738void ArithmeticNode::make(DsqlCompilerScratch* dsqlScratch, dsc* desc)
739{
740 dsc desc1, desc2;
741
742 DsqlDescMaker::fromNode(dsqlScratch, &desc1, arg1);
743 DsqlDescMaker::fromNode(dsqlScratch, &desc2, arg2);
744
745 if (desc1.isNull())
746 {
747 desc1 = desc2;
748 desc1.setNull();
749 }
750
751 if (desc2.isNull())
752 {
753 desc2 = desc1;
754 desc2.setNull();
755 }
756
757 if (nodeIs<NullNode>(arg1) && nodeIs<NullNode>(arg2))
758 {
759 // NULL + NULL = NULL of INT
760 desc->makeLong(0);
761 desc->setNullable(true);
762 }
763 else if (dialect1)
764 makeDialect1(desc, desc1, desc2);
765 else
766 makeDialect3(desc, desc1, desc2);
767}
768
769void ArithmeticNode::makeDialect1(dsc* desc, dsc& desc1, dsc& desc2)
770{

Callers

nothing calls this directly

Calls 15

ERRD_postFunction · 0.85
GdsClass · 0.85
DSqlDataTypeUtilClass · 0.85
NumClass · 0.85
DTYPE_IS_TEXTFunction · 0.85
DTYPE_IS_BLOBFunction · 0.85
DTYPE_IS_NUMERICFunction · 0.85
DSC_string_lengthFunction · 0.85
makeLongMethod · 0.80
setNullableMethod · 0.80
isTimeMethod · 0.80
makeTimeTzMethod · 0.80

Tested by

no test coverage detected