pass1.cpp (Firebird-3.0.2.32703-0.tar.bz2) | : | pass1.cpp (Firebird-3.0.4.33054-0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 2676 | skipping to change at line 2676 | |||
// columnname. | // columnname. | |||
if ((aliasNode = ExprNode::as<Dsq lAliasNode>(select_item))) | if ((aliasNode = ExprNode::as<Dsq lAliasNode>(select_item))) | |||
castNode->source = aliasN ode->value; | castNode->source = aliasN ode->value; | |||
else if ((derivedField = ExprNode ::as<DerivedFieldNode>(select_item))) | else if ((derivedField = ExprNode ::as<DerivedFieldNode>(select_item))) | |||
castNode->source = derive dField->value; | castNode->source = derive dField->value; | |||
else | else | |||
castNode->source = select _item; | castNode->source = select _item; | |||
// When a cast is created we're l osing our fieldname, thus | // When a cast is created we're l osing our fieldname, thus | |||
// create an alias to keep it. | // create an alias to keep it. | |||
const ValueExprNode* name_node = select_item; | ValueExprNode* name_node = select _item; | |||
const DsqlMapNode* mapNode; | const DsqlMapNode* mapNode; | |||
while ((mapNode = ExprNode::as<Ds qlMapNode>(name_node))) | while ((mapNode = ExprNode::as<Ds qlMapNode>(name_node))) | |||
{ | { | |||
// Skip all the DsqlMapNo des. | // Skip all the DsqlMapNo des. | |||
name_node = mapNode->map- >map_node; | name_node = mapNode->map- >map_node; | |||
} | } | |||
const FieldNode* fieldNode; | const FieldNode* fieldNode; | |||
if ((fieldNode = ExprNode::as<Fie ldNode>(name_node))) | if ((fieldNode = ExprNode::as<Fie ldNode>(name_node))) | |||
{ | { | |||
// Create new node for al ias and copy fieldname. | // Create new node for al ias and copy fieldname. | |||
newAliasNode = FB_NEW_POO L(*tdbb->getDefaultPool()) DsqlAliasNode( | newAliasNode = FB_NEW_POO L(*tdbb->getDefaultPool()) DsqlAliasNode( | |||
*tdbb->getDefault Pool(), fieldNode->dsqlField->fld_name, NULL); | *tdbb->getDefault Pool(), fieldNode->dsqlField->fld_name, NULL); | |||
// The alias value will b e assigned a bit later. | // The alias value will b e assigned a bit later. | |||
} | } | |||
else if ((derivedField = ExprNode | ||||
::as<DerivedFieldNode>(name_node))) | ||||
{ | ||||
// Create new node for al | ||||
ias and copy fieldname. | ||||
newAliasNode = FB_NEW_POO | ||||
L(*tdbb->getDefaultPool()) DsqlAliasNode( | ||||
*tdbb->getDefault | ||||
Pool(), derivedField->name, NULL); | ||||
// The alias value will b | ||||
e assigned a bit later. | ||||
} | ||||
} | } | |||
dsql_fld* field = castNode->dsqlField; | dsql_fld* field = castNode->dsqlField; | |||
// Copy the descriptor to a field, becaus e the gen_cast | // Copy the descriptor to a field, becaus e the gen_cast | |||
// uses a dsql field type. | // uses a dsql field type. | |||
field->dtype = desc.dsc_dtype; | field->dtype = desc.dsc_dtype; | |||
field->scale = desc.dsc_scale; | field->scale = desc.dsc_scale; | |||
field->subType = desc.dsc_sub_type; | field->subType = desc.dsc_sub_type; | |||
field->length = desc.dsc_length; | field->length = desc.dsc_length; | |||
field->flags = (desc.dsc_flags & DSC_null able) ? FLD_nullable : 0; | field->flags = (desc.dsc_flags & DSC_null able) ? FLD_nullable : 0; | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 13 lines changed or added |