BIN_SHL and BIN_SHR: Incorrect results when shift >= 64
-------------------------------------------------------

                 Key: CORE-5230
                 URL: http://tracker.firebirdsql.org/browse/CORE-5230
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 3.0.0, 2.5.5
         Environment: Win7, CentOS 7
            Reporter: Paul Vinkenoog
            Priority: Minor


If the second argument to BIT_SHL/BIT_SHR is 64 or greater, it is taken modulo 
64 before the shift operation is performed. This leads to unexpected and 
incorrect results.

Example with positive numbers:

select bin_shr(120, 1) from rdb$database -> 60
select bin_shr(120, 6) from rdb$database -> 1
select bin_shr(120, 7) from rdb$database -> 0
..
select bin_shr(120, 63) from rdb$database -> 0
select bin_shr(120, 64) from rdb$database -> 120 (wrong)
select bin_shr(120, 65) from rdb$database -> 60 (wrong)

Example with negative numbers:

select bin_shr(-120, 1) from rdb$database -> -60
select bin_shr(-120, 2) from rdb$database -> -30
select bin_shr(-120, 7) from rdb$database -> -1
select bin_shr(-120, 9) from rdb$database -> -1
..
select bin_shr(-120, 63) from rdb$database -> -1
select bin_shr(-120, 64) from rdb$database -> -120 (wrong)
select bin_shr(-120, 65) from rdb$database -> -60 (wrong)

Instead of MOD'ing the shift argument by 64, it should be maximized at 64 
(because all the original bits have been shifted out by then) - at least as 
long as the result type isn't bigger than int64.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to