"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/dsql/pass1.cpp" between
Firebird-3.0.2.32703-0.tar.bz2 and Firebird-3.0.4.33054-0.tar.bz2

About: Firebird is a relational database offering many ANSI SQL standard features.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)