Skip to content

Commit

Permalink
Fix rails#7619. 0x prefix must be added when assigning hexadecimal st…
Browse files Browse the repository at this point in the history
…ring into bit column in Postgresql, because solving ambiguity.
  • Loading branch information
kennyj committed Nov 13, 2012
1 parent 7864f83 commit 7d244df
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
4 changes: 4 additions & 0 deletions activerecord/CHANGELOG.md
@@ -1,5 +1,9 @@
## Rails 4.0.0 (unreleased) ##

* `0x` prefix must be added when assigning hexadecimal string into `bit` column in PostgreSQL.

*kennyj*

* Fix `find_in_batches` crashing when IDs are strings and start option is not specified.

*Alexis Bernard*
Expand Down
Expand Up @@ -54,8 +54,8 @@ def quote(value, column = nil) #:nodoc:
when 'xml' then "xml '#{quote_string(value)}'"
when /^bit/
case value
when /^[01]*$/ then "B'#{value}'" # Bit-string notation
when /^[0-9A-F]*$/i then "X'#{value}'" # Hexadecimal notation
when /^0x/i then "X'#{value[2..-1]}'" # Hexadecimal notation
else "B'#{value}'" # Bit-string notation
end
else
super
Expand Down
8 changes: 7 additions & 1 deletion activerecord/test/cases/adapters/postgresql/datatype_test.rb
Expand Up @@ -235,7 +235,7 @@ def test_update_network_address

def test_update_bit_string
new_bit_string = '11111111'
new_bit_string_varying = 'FF'
new_bit_string_varying = '0xFF'
assert @first_bit_string.bit_string = new_bit_string
assert @first_bit_string.bit_string_varying = new_bit_string_varying
assert @first_bit_string.save
Expand All @@ -244,6 +244,12 @@ def test_update_bit_string
assert_equal @first_bit_string.bit_string, @first_bit_string.bit_string_varying
end

def test_invalid_hex_string
new_bit_string = 'FF'
@first_bit_string.bit_string = new_bit_string
assert_raise(ActiveRecord::StatementInvalid) { assert @first_bit_string.save }
end

def test_update_oid
new_value = 567890
assert @first_oid.obj_id = new_value
Expand Down

0 comments on commit 7d244df

Please sign in to comment.