-
Notifications
You must be signed in to change notification settings - Fork 21.4k
/
type_metadata.rb
44 lines (37 loc) · 979 Bytes
/
type_metadata.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true
module ActiveRecord
# :stopdoc:
module ConnectionAdapters
module PostgreSQL
class TypeMetadata < DelegateClass(SqlTypeMetadata)
undef to_yaml if method_defined?(:to_yaml)
include Deduplicable
attr_reader :oid, :fmod
def initialize(type_metadata, oid: nil, fmod: nil)
super(type_metadata)
@oid = oid
@fmod = fmod
end
def ==(other)
other.is_a?(TypeMetadata) &&
__getobj__ == other.__getobj__ &&
oid == other.oid &&
fmod == other.fmod
end
alias eql? ==
def hash
TypeMetadata.hash ^
__getobj__.hash ^
oid.hash ^
fmod.hash
end
private
def deduplicated
__setobj__(__getobj__.deduplicate)
super
end
end
end
PostgreSQLTypeMetadata = PostgreSQL::TypeMetadata
end
end