From: Arno B. <arn...@us...> - 2006-07-31 10:41:09
|
Build Version : V2.0.0.4851 Vulcan 1.0 Development (writeBuildNum.sh,v 1.1.1.824 2006/07/31 10:41:03 arnobrink ) Update of /cvsroot/firebird/vulcan/src/dsql In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv31446 Modified Files: pass1.cpp Log Message: Fix JIRA bug CORE-855 Aggregates on derived fields where allowed in where clause Index: pass1.cpp =================================================================== RCS file: /cvsroot/firebird/vulcan/src/dsql/pass1.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -b -U3 -r1.31 -r1.32 --- pass1.cpp 26 Apr 2006 02:33:39 -0000 1.31 +++ pass1.cpp 31 Jul 2006 10:41:01 -0000 1.32 @@ -4494,8 +4494,31 @@ break; case nod_derived_field: + { // This is a "virtual" field *field = true; + const USHORT df_scope_level = (USHORT)(U_IPTR)node->nod_arg[e_derived_field_scope]; + + switch (match_type) { + case FIELD_MATCH_TYPE_EQUAL: + return (df_scope_level == check_scope_level); + + case FIELD_MATCH_TYPE_LOWER: + return (df_scope_level < check_scope_level); + + case FIELD_MATCH_TYPE_LOWER_EQUAL: + return (df_scope_level <= check_scope_level); + + case FIELD_MATCH_TYPE_HIGHER: + return (df_scope_level > check_scope_level); + + case FIELD_MATCH_TYPE_HIGHER_EQUAL: + return (df_scope_level >= check_scope_level); + + default: + fb_assert(false); + } + } break; case nod_aggregate: |