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

Function resolveUsingField

src/jrd/RecordSourceNodes.cpp:4143–4169  ·  view source on GitHub ↗

Resolve a field for JOIN USING purposes.

Source from the content-addressed store, hash-verified

4141
4142// Resolve a field for JOIN USING purposes.
4143static ValueExprNode* resolveUsingField(DsqlCompilerScratch* dsqlScratch, const MetaName& name,
4144 ValueListNode* list, const FieldNode* flawedNode, const TEXT* side, dsql_ctx*& ctx)
4145{
4146 ValueExprNode* node = PASS1_lookup_alias(dsqlScratch, name, list, false);
4147
4148 if (!node)
4149 {
4150 string qualifier;
4151 qualifier.printf("<%s side of USING>", side);
4152 PASS1_field_unknown(qualifier.c_str(), name.c_str(), flawedNode);
4153 }
4154
4155 DsqlAliasNode* aliasNode;
4156 FieldNode* fieldNode;
4157 DerivedFieldNode* derivedField;
4158
4159 if ((aliasNode = nodeAs<DsqlAliasNode>(node)))
4160 ctx = aliasNode->implicitJoin->visibleInContext;
4161 else if ((fieldNode = nodeAs<FieldNode>(node)))
4162 ctx = fieldNode->dsqlContext;
4163 else if ((derivedField = nodeAs<DerivedFieldNode>(node)))
4164 ctx = derivedField->context;
4165 else
4166 fb_assert(false);
4167
4168 return node;
4169}

Callers 1

dsqlPassMethod · 0.85

Calls 4

PASS1_lookup_aliasFunction · 0.85
PASS1_field_unknownFunction · 0.85
printfMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected