From: <di...@us...> - 2012-11-01 01:36:35
|
Revision: 57271 http://firebird.svn.sourceforge.net/firebird/?rev=57271&view=rev Author: dimitr Date: 2012-11-01 01:36:27 +0000 (Thu, 01 Nov 2012) Log Message: ----------- Wiped out the code that never worked due to the missing support for native quads. Modified Paths: -------------- firebird/trunk/builds/mac_os_x/CS/CS.pbproj/project.pbxproj firebird/trunk/builds/win32/msvc10/common.vcxproj firebird/trunk/builds/win32/msvc8/common.vcproj firebird/trunk/builds/win32/msvc9/common.vcproj firebird/trunk/src/common/common.h firebird/trunk/src/common/cvt.cpp firebird/trunk/src/dsql/AggNodes.cpp firebird/trunk/src/dsql/BoolNodes.cpp firebird/trunk/src/dsql/ExprNodes.cpp firebird/trunk/src/dsql/Nodes.h firebird/trunk/src/gpre/cme.cpp firebird/trunk/src/isql/isql.epp firebird/trunk/src/jrd/align.h firebird/trunk/src/jrd/cvt2.cpp firebird/trunk/src/jrd/evl.cpp Modified: firebird/trunk/builds/mac_os_x/CS/CS.pbproj/project.pbxproj =================================================================== --- firebird/trunk/builds/mac_os_x/CS/CS.pbproj/project.pbxproj 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/builds/mac_os_x/CS/CS.pbproj/project.pbxproj 2012-11-01 01:36:27 UTC (rev 57271) @@ -5073,21 +5073,6 @@ path = qatest.cpp; refType = 4; }; - F616C6910200B0D001EF0ADE = { - isa = PBXFileReference; - path = quad.cpp; - refType = 4; - }; - F616C6920200B0D001EF0ADE = { - isa = PBXFileReference; - path = quad.h; - refType = 4; - }; - F616C6930200B0D001EF0ADE = { - isa = PBXFileReference; - path = quad_proto.h; - refType = 4; - }; F616C6940200B0D001EF0ADE = { isa = PBXFileReference; path = que.h; Modified: firebird/trunk/builds/win32/msvc10/common.vcxproj =================================================================== --- firebird/trunk/builds/win32/msvc10/common.vcxproj 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/builds/win32/msvc10/common.vcxproj 2012-11-01 01:36:27 UTC (rev 57271) @@ -66,7 +66,6 @@ <ClCompile Include="..\..\..\src\common\os\win32\os_utils.cpp" /> <ClCompile Include="..\..\..\src\common\os\win32\path_utils.cpp" /> <ClCompile Include="..\..\..\src\common\pretty.cpp" /> - <ClCompile Include="..\..\..\src\common\quad.cpp" /> <ClCompile Include="..\..\..\src\common\ScanDir.cpp" /> <ClCompile Include="..\..\..\src\common\sdl.cpp" /> <ClCompile Include="..\..\..\src\common\security.cpp" /> @@ -165,8 +164,6 @@ <ClInclude Include="..\..\..\src\common\os\os_utils.h" /> <ClInclude Include="..\..\..\src\common\os\path_utils.h" /> <ClInclude Include="..\..\..\src\common\prett_proto.h" /> - <ClInclude Include="..\..\..\src\common\quad.h" /> - <ClInclude Include="..\..\..\src\common\quad_proto.h" /> <ClInclude Include="..\..\..\src\common\ScanDir.h" /> <ClInclude Include="..\..\..\src\common\sdl.h" /> <ClInclude Include="..\..\..\src\common\sdltable.h" /> Modified: firebird/trunk/builds/win32/msvc8/common.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc8/common.vcproj 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/builds/win32/msvc8/common.vcproj 2012-11-01 01:36:27 UTC (rev 57271) @@ -384,10 +384,6 @@ > </File> <File - RelativePath="..\..\..\src\common\quad.cpp" - > - </File> - <File RelativePath="..\..\..\src\common\ScanDir.cpp" > </File> @@ -797,14 +793,6 @@ > </File> <File - RelativePath="..\..\..\src\common\quad.h" - > - </File> - <File - RelativePath="..\..\..\src\common\quad_proto.h" - > - </File> - <File RelativePath="..\..\..\src\common\classes\QualifiedName.h" > </File> Modified: firebird/trunk/builds/win32/msvc9/common.vcproj =================================================================== --- firebird/trunk/builds/win32/msvc9/common.vcproj 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/builds/win32/msvc9/common.vcproj 2012-11-01 01:36:27 UTC (rev 57271) @@ -384,10 +384,6 @@ > </File> <File - RelativePath="..\..\..\src\common\quad.cpp" - > - </File> - <File RelativePath="..\..\..\src\common\ScanDir.cpp" > </File> @@ -797,14 +793,6 @@ > </File> <File - RelativePath="..\..\..\src\common\quad.h" - > - </File> - <File - RelativePath="..\..\..\src\common\quad_proto.h" - > - </File> - <File RelativePath="..\..\..\src\common\classes\QualifiedName.h" > </File> Modified: firebird/trunk/src/common/common.h =================================================================== --- firebird/trunk/src/common/common.h 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/common/common.h 2012-11-01 01:36:27 UTC (rev 57271) @@ -916,6 +916,14 @@ #define FB_LONG_DOUBLE_SECOND 1 #endif +// Used in quad operations +#ifndef WORDS_BIGENDIAN +const int LOW_WORD = 0; +const int HIGH_WORD = 1; +#else +const int LOW_WORD = 1; +const int HIGH_WORD = 0; +#endif #ifndef HAVE_WORKING_VFORK #define vfork fork Modified: firebird/trunk/src/common/cvt.cpp =================================================================== --- firebird/trunk/src/common/cvt.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/common/cvt.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -45,7 +45,6 @@ #include "../common/classes/timestamp.h" #include "../common/cvt.h" #include "../jrd/intl.h" -#include "../common/quad.h" #include "../jrd/val.h" #include "../common/classes/VaryStr.h" #include "../common/classes/FpeControl.h" @@ -144,7 +143,6 @@ class DummyException {}; -#ifndef NATIVE_QUAD #ifndef WORDS_BIGENDIAN static const SQUAD quad_min_int = { 0, SLONG_MIN }; static const SQUAD quad_max_int = { -1, SLONG_MAX }; @@ -152,7 +150,6 @@ static const SQUAD quad_min_int = { SLONG_MIN, 0 }; static const SQUAD quad_max_int = { SLONG_MAX, -1 }; #endif -#endif static const double eps_double = 1e-14; @@ -314,7 +311,7 @@ * nice, formatted text. * **************************************/ -#ifndef NATIVE_QUAD + // For now, this routine does not handle quadwords unless this is // supported by the platform as a native datatype. @@ -323,7 +320,6 @@ fb_assert(false); cb->err(Arg::Gds(isc_badblk)); // internal error } -#endif SSHORT pad_count = 0, decimal = 0, neg = 0; @@ -1081,16 +1077,12 @@ break; case dtype_quad: -#ifdef NATIVE_QUAD - value = *((SQUAD *) desc->dsc_address); -#else value = ((SLONG *) desc->dsc_address)[HIGH_WORD]; value *= -((double) LONG_MIN_real); if (value < 0) value -= ((ULONG *) desc->dsc_address)[LOW_WORD]; else value += ((ULONG *) desc->dsc_address)[LOW_WORD]; -#endif break; case dtype_int64: @@ -2047,7 +2039,7 @@ * or if it is in hexadecimal notation. * **************************************/ -#ifndef NATIVE_QUAD + // For now, this routine does not handle quadwords unless this is // supported by the platform as a native datatype. @@ -2056,7 +2048,6 @@ fb_assert(false); err(Arg::Gds(isc_badblk)); // internal error } -#endif dsc errd; MOVE_CLEAR(&errd, sizeof(errd)); @@ -2371,49 +2362,6 @@ } break; - case dtype_real: - case dtype_double: - if (desc->dsc_dtype == dtype_real) - d = *((float*) p); - else if (desc->dsc_dtype == DEFAULT_DOUBLE) - d = *((double*) p); - - if (scale > 0) - { - do { - d /= 10.; - } while (--scale); - } - else if (scale < 0) - { - do { - d *= 10.; - } while (++scale); - } - - if (d > 0) - d += 0.5; - else - d -= 0.5; - - // make sure the cast will succeed - different machines - // do different things if the value is larger than a quad - // can hold - - if (d < (double) QUAD_MIN_real || (double) QUAD_MAX_real < d) - { - // If rounding would yield a legitimate value, permit it - - if (d > (double) QUAD_MIN_real - 1.) - return QUAD_MIN_int; - - if (d < (double) QUAD_MAX_real + 1.) - return QUAD_MAX_int; - - err(Arg::Gds(isc_arith_except) << Arg::Gds(isc_numeric_out_of_range)); - } - return QUAD_FROM_DOUBLE(d, err); - case dtype_varying: case dtype_cstring: case dtype_text: @@ -2442,39 +2390,11 @@ // Last, but not least, adjust for scale - if (scale == 0) - return value; - -#ifndef NATIVE_QUAD - fb_assert(false); - err(Arg::Gds(isc_badblk)); // internal error -#else - if (scale > 0) + if (scale != 0) { - SLONG fraction = 0; - do { - if (scale == 1) - fraction = value % 10; - value /= 10; - } while (--scale); - if (fraction > 4) - value++; - // The following 2 lines are correct for platforms where - // ((-85 / 10 == -8) && (-85 % 10 == -5)). If we port to - // a platform where ((-85 / 10 == -9) && (-85 % 10 == 5)), - // we'll have to change this depending on the platform. - else if (fraction < -4) - value--; + fb_assert(false); + err(Arg::Gds(isc_badblk)); // internal error } - else - { - do { - if (value > QUAD_LIMIT || value < -QUAD_LIMIT) - err(Arg::Gds(isc_arith_except) << Arg::Gds(isc_numeric_out_of_range)); - value *= 10; - } while (++scale); - } -#endif return value; } Modified: firebird/trunk/src/dsql/AggNodes.cpp =================================================================== --- firebird/trunk/src/dsql/AggNodes.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/dsql/AggNodes.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -968,28 +968,17 @@ nodFlags |= FLAG_DOUBLE; return; - case dtype_quad: - desc->dsc_dtype = dtype_quad; - desc->dsc_length = sizeof(SQUAD); - desc->dsc_sub_type = 0; - desc->dsc_flags = 0; - nodScale = desc->dsc_scale; - nodFlags |= FLAG_QUAD; -#ifdef NATIVE_QUAD - return; -#endif - - default: - fb_assert(false); - // fall into - case dtype_sql_time: case dtype_sql_date: case dtype_timestamp: + case dtype_quad: case dtype_blob: case dtype_array: case dtype_dbkey: break; // break to error reporting code + + default: + fb_assert(false); } } else @@ -1026,28 +1015,17 @@ nodFlags |= FLAG_DOUBLE; return; - case dtype_quad: - desc->dsc_dtype = dtype_quad; - desc->dsc_length = sizeof(SQUAD); - desc->dsc_sub_type = 0; - desc->dsc_flags = 0; - nodScale = desc->dsc_scale; - nodFlags |= FLAG_QUAD; -#ifdef NATIVE_QUAD - return; -#endif - - default: - fb_assert(false); - // fall into - case dtype_sql_time: case dtype_sql_date: case dtype_timestamp: + case dtype_quad: case dtype_blob: case dtype_array: case dtype_dbkey: break; // break to error reporting code + + default: + fb_assert(false); } } Modified: firebird/trunk/src/dsql/BoolNodes.cpp =================================================================== --- firebird/trunk/src/dsql/BoolNodes.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/dsql/BoolNodes.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -25,7 +25,6 @@ #include "../dsql/StmtNodes.h" #include "../jrd/align.h" #include "../jrd/blr.h" -#include "../common/quad.h" #include "../jrd/tra.h" #include "../jrd/recsrc/RecordSource.h" #include "../jrd/Optimizer.h" Modified: firebird/trunk/src/dsql/ExprNodes.cpp =================================================================== --- firebird/trunk/src/dsql/ExprNodes.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/dsql/ExprNodes.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -28,7 +28,6 @@ #include "../dsql/StmtNodes.h" #include "../jrd/align.h" #include "../jrd/blr.h" -#include "../common/quad.h" #include "../jrd/tra.h" #include "../jrd/Function.h" #include "../jrd/SysFunction.h" @@ -1038,26 +1037,12 @@ return; case dtype_quad: - nodFlags |= FLAG_QUAD; - desc->dsc_dtype = dtype_quad; - desc->dsc_length = sizeof(SQUAD); - if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) - desc->dsc_scale = 0; - else - desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); - nodScale = desc->dsc_scale; - desc->dsc_sub_type = 0; - desc->dsc_flags = 0; -#ifdef NATIVE_QUAD - return; -#endif - default: - fb_assert(false); - // FALLINTO - case dtype_blob: case dtype_array: break; + + default: + fb_assert(false); } break; @@ -1309,27 +1294,12 @@ return; case dtype_quad: - nodFlags |= FLAG_QUAD; - desc->dsc_dtype = dtype_quad; - desc->dsc_length = sizeof(SQUAD); - if (DTYPE_IS_TEXT(desc1.dsc_dtype) || DTYPE_IS_TEXT(desc2.dsc_dtype)) - desc->dsc_scale = 0; - else - desc->dsc_scale = MIN(desc1.dsc_scale, desc2.dsc_scale); - nodScale = desc->dsc_scale; - desc->dsc_sub_type = 0; - desc->dsc_flags = 0; -#ifdef NATIVE_QUAD - return; -#endif - - default: - fb_assert(false); - // FALLINTO - case dtype_blob: case dtype_array: break; + + default: + fb_assert(false); } break; @@ -1567,23 +1537,6 @@ return result; } - // Handle (oh, ugh) quad arithmetic - - if (node->nodFlags & FLAG_QUAD) - { - const SQUAD q1 = MOV_get_quad(desc, node->nodScale); - const SQUAD q2 = MOV_get_quad(&value->vlu_desc, node->nodScale); - - result->dsc_dtype = dtype_quad; - result->dsc_length = sizeof(SQUAD); - result->dsc_scale = node->nodScale; - value->vlu_misc.vlu_quad = (blrOp == blr_subtract) ? - QUAD_SUBTRACT(q2, q1, ERR_post) : QUAD_ADD(q1, q2, ERR_post); - result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; - - return result; - } - // Everything else defaults to longword // CVC: Maybe we should upgrade the sum to double if it doesn't fit? @@ -1643,23 +1596,6 @@ return result; } - // Handle (oh, ugh) quad arithmetic - - if (node->nodFlags & FLAG_QUAD) - { - const SQUAD q1 = MOV_get_quad(desc, node->nodScale); - const SQUAD q2 = MOV_get_quad(&value->vlu_desc, node->nodScale); - - result->dsc_dtype = dtype_quad; - result->dsc_length = sizeof(SQUAD); - result->dsc_scale = node->nodScale; - value->vlu_misc.vlu_quad = (blrOp == blr_subtract) ? - QUAD_SUBTRACT(q2, q1, ERR_post) : QUAD_ADD(q1, q2, ERR_post); - result->dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; - - return result; - } - // Everything else defaults to int64 SINT64 i1 = MOV_get_int64(desc, node->nodScale); @@ -1727,22 +1663,6 @@ return &value->vlu_desc; } - // Handle (oh, ugh) quad arithmetic - - if (nodFlags & FLAG_QUAD) - { - const SSHORT scale = NUMERIC_SCALE(value->vlu_desc); - const SQUAD q1 = MOV_get_quad(desc, nodScale - scale); - const SQUAD q2 = MOV_get_quad(&value->vlu_desc, scale); - value->vlu_desc.dsc_dtype = dtype_quad; - value->vlu_desc.dsc_length = sizeof(SQUAD); - value->vlu_desc.dsc_scale = nodScale; - value->vlu_misc.vlu_quad = QUAD_MULTIPLY(q1, q2, ERR_post); - value->vlu_desc.dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; - - return &value->vlu_desc; - } - // Everything else defaults to longword /* CVC: With so many problems cropping with dialect 1 and multiplication, @@ -1817,23 +1737,6 @@ return &value->vlu_desc; } - // Handle (oh, ugh) quad arithmetic - - if (nodFlags & FLAG_QUAD) - { - const SSHORT scale = NUMERIC_SCALE(value->vlu_desc); - const SQUAD q1 = MOV_get_quad(desc, nodScale - scale); - const SQUAD q2 = MOV_get_quad(&value->vlu_desc, scale); - - value->vlu_desc.dsc_dtype = dtype_quad; - value->vlu_desc.dsc_length = sizeof(SQUAD); - value->vlu_desc.dsc_scale = nodScale; - value->vlu_misc.vlu_quad = QUAD_MULTIPLY(q1, q2, ERR_post); - value->vlu_desc.dsc_address = (UCHAR*) &value->vlu_misc.vlu_quad; - - return &value->vlu_desc; - } - // Everything else defaults to int64 const SSHORT scale = NUMERIC_SCALE(value->vlu_desc); @@ -7093,7 +6996,10 @@ void NegateNode::getDesc(thread_db* tdbb, CompilerScratch* csb, dsc* desc) { arg->getDesc(tdbb, csb, desc); - nodFlags = arg->nodFlags & (FLAG_DOUBLE | FLAG_QUAD); + nodFlags = arg->nodFlags & FLAG_DOUBLE; + + if (desc->dsc_dtype == dtype_quad) + IBERROR(224); // msg 224 quad word arithmetic not supported } ValueExprNode* NegateNode::copy(thread_db* tdbb, NodeCopier& copier) const @@ -7147,11 +7053,6 @@ impure->vlu_misc.vlu_double = -impure->vlu_misc.vlu_double; break; - case dtype_quad: - impure->vlu_misc.vlu_quad = - QUAD_NEGATE(impure->vlu_misc.vlu_quad, ERR_post); - break; - case dtype_int64: if (impure->vlu_misc.vlu_int64 == MIN_SINT64) ERR_post(Arg::Gds(isc_exception_integer_overflow)); @@ -9247,29 +9148,18 @@ nodFlags |= FLAG_DOUBLE; return; - case dtype_quad: - desc->dsc_dtype = dtype_quad; - desc->dsc_length = sizeof(SQUAD); - desc->dsc_sub_type = 0; - desc->dsc_flags = 0; - nodScale = desc->dsc_scale; - nodFlags |= FLAG_QUAD; -#ifdef NATIVE_QUAD - return; -#endif - - default: - fb_assert(false); - // fall into - case dtype_sql_time: case dtype_sql_date: case dtype_timestamp: + case dtype_quad: case dtype_blob: case dtype_array: case dtype_dbkey: // break to error reporting code break; + + default: + fb_assert(false); } if (dtype == dtype_quad) Modified: firebird/trunk/src/dsql/Nodes.h =================================================================== --- firebird/trunk/src/dsql/Nodes.h 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/dsql/Nodes.h 2012-11-01 01:36:27 UTC (rev 57271) @@ -473,10 +473,9 @@ static const unsigned FLAG_ANSI_NOT = 0x08; // ANY/ALL predicate is prefixed with a NOT one. // Value flags. - static const unsigned FLAG_QUAD = 0x10; // Compute in quad (default is long). - static const unsigned FLAG_DOUBLE = 0x20; - static const unsigned FLAG_DATE = 0x40; - static const unsigned FLAG_VALUE = 0x80; // Full value area required in impure space. + static const unsigned FLAG_DOUBLE = 0x10; + static const unsigned FLAG_DATE = 0x20; + static const unsigned FLAG_VALUE = 0x40; // Full value area required in impure space. explicit ExprNode(Type aType, MemoryPool& pool, Kind aKind) : DmlNode(pool, aKind), Modified: firebird/trunk/src/gpre/cme.cpp =================================================================== --- firebird/trunk/src/gpre/cme.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/gpre/cme.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -700,13 +700,6 @@ f->fld_scale = field1.fld_scale + field2.fld_scale; f->fld_length = sizeof(SLONG); break; -#ifdef NATIVE_QUAD - case dtype_quad: - f->fld_dtype = dtype_quad; - f->fld_scale = field1.fld_scale + field2.fld_scale; - f->fld_length = sizeof(ISC_QUAD); - break; -#endif case dtype_int64: f->fld_dtype = dtype_int64; f->fld_scale = field1.fld_scale + field2.fld_scale; @@ -804,13 +797,6 @@ f->fld_scale = MIN(field1.fld_scale, field2.fld_scale); f->fld_length = sizeof(SLONG); break; -#ifdef NATIVE_QUAD - case dtype_quad: - f->fld_dtype = dtype_quad; - f->fld_scale = MIN(field1.fld_scale, field2.fld_scale); - f->fld_length = sizeof(ISC_QUAD); - break; -#endif // Begin date/time/timestamp support case dtype_sql_date: f->fld_dtype = dtype_sql_date; Modified: firebird/trunk/src/isql/isql.epp =================================================================== --- firebird/trunk/src/isql/isql.epp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/isql/isql.epp 2012-11-01 01:36:27 UTC (rev 57271) @@ -7386,30 +7386,6 @@ } break; -#ifdef NATIVE_QUAD - case SQL_QUAD: - if (dscale) - { - // Handle floating scale and precision - - double numeric = *(SQUAD*) var->sqldata; - const double exponent = -dscale; - numeric = numeric / pow(10.0, exponent); - sprintf(p, "%*.*f ", length, -dscale, numeric); - if (List) { - isqlGlob.printf("%.*f%s", -dscale, numeric, NEWLINE); - } - } - else - { - sprintf(p, "%*ld ", length, *(SQUAD*) var->sqldata); - if (List) { - isqlGlob.printf("%ld%s", *(SQUAD*) var->sqldata, NEWLINE); - } - } - break; -#endif - case SQL_FLOAT: { // @@ -8398,11 +8374,6 @@ case SQL_INT64: disp_length = INT64_LEN; break; -#ifdef NATIVE_QUAD - case SQL_QUAD: - disp_length = QUAD_LEN; - break; -#endif case SQL_BOOLEAN: disp_length = BOOLEAN_LEN; break; Modified: firebird/trunk/src/jrd/align.h =================================================================== --- firebird/trunk/src/jrd/align.h 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/jrd/align.h 2012-11-01 01:36:27 UTC (rev 57271) @@ -92,11 +92,7 @@ sizeof(SCHAR), /* dtype_byte */ sizeof(SSHORT), /* dtype_short */ sizeof(SLONG), /* dtype_long */ -#ifndef NATIVE_QUAD sizeof(SLONG), /* dtype_quad */ -#else - sizeof(SQUAD), /* dtype_quad */ -#endif sizeof(float), /* dtype_real */ FB_DOUBLE_ALIGN, /* dtype_double */ FB_DOUBLE_ALIGN, /* dtype_d_float */ Modified: firebird/trunk/src/jrd/cvt2.cpp =================================================================== --- firebird/trunk/src/jrd/cvt2.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/jrd/cvt2.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -31,7 +31,6 @@ #include "../jrd/jrd.h" #include "../jrd/val.h" -#include "../common/quad.h" #include "gen/iberror.h" #include "../jrd/intl.h" #include "../common/gdsassert.h" @@ -96,7 +95,31 @@ dtype_boolean // compares with nothing except itself }; +static inline SSHORT QUAD_COMPARE(const SQUAD* arg1, const SQUAD* arg2) +{ +/************************************** + * + * Q U A D _ c o m p a r e + * + ************************************** + * + * Functional description + * Compare two descriptors. Return (-1, 0, 1) if a<b, a=b, or a>b. + * + **************************************/ + if (((SLONG *) arg1)[HIGH_WORD] > ((SLONG *) arg2)[HIGH_WORD]) + return 1; + if (((SLONG *) arg1)[HIGH_WORD] < ((SLONG *) arg2)[HIGH_WORD]) + return -1; + if (((ULONG *) arg1)[LOW_WORD] > ((ULONG *) arg2)[LOW_WORD]) + return 1; + if (((ULONG *) arg1)[LOW_WORD] < ((ULONG *) arg2)[LOW_WORD]) + return -1; + return 0; +} + + bool CVT2_get_binary_comparable_desc(dsc* result, const dsc* arg1, const dsc* arg2) { /************************************** @@ -217,7 +240,7 @@ return -1; case dtype_quad: - return QUAD_COMPARE(*(SQUAD *) p1, *(SQUAD *) p2); + return QUAD_COMPARE((SQUAD *) p1, (SQUAD *) p2); case dtype_int64: if (*(SINT64 *) p1 == *(SINT64 *) p2) @@ -456,7 +479,7 @@ scale = arg1->dsc_scale; const SQUAD temp1 = CVT_get_quad(arg1, scale, ERR_post); const SQUAD temp2 = CVT_get_quad(arg2, scale, ERR_post); - return QUAD_COMPARE(temp1, temp2); + return QUAD_COMPARE(&temp1, &temp2); } case dtype_real: Modified: firebird/trunk/src/jrd/evl.cpp =================================================================== --- firebird/trunk/src/jrd/evl.cpp 2012-11-01 00:16:55 UTC (rev 57270) +++ firebird/trunk/src/jrd/evl.cpp 2012-11-01 01:36:27 UTC (rev 57271) @@ -80,7 +80,6 @@ #include "../jrd/intl.h" #include "../jrd/intl_classes.h" #include "../jrd/rse.h" -#include "../common/quad.h" #include "../jrd/sort.h" #include "../jrd/blr.h" #include "../jrd/tra.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |