diff options
author | James Le Cuirot <james.le-cuirot@yakara.com> | 2014-03-07 13:15:33 +0000 |
---|---|---|
committer | James Le Cuirot <chewi@aura-online.co.uk> | 2014-04-08 00:39:25 +0100 |
commit | 6296617c159d5cee0ba1c76f4ea983e3b5e26b6b (patch) | |
tree | fc0ceff2fbf84ef1a1e2214f6fe50844edac882a /lib/arel/visitors | |
parent | 7515445966b265dd9e90ce4457bff972e1fc3746 (diff) | |
download | rails-6296617c159d5cee0ba1c76f4ea983e3b5e26b6b.tar.gz rails-6296617c159d5cee0ba1c76f4ea983e3b5e26b6b.tar.bz2 rails-6296617c159d5cee0ba1c76f4ea983e3b5e26b6b.zip |
Add Regexp and NotRegexp nodes for PostgreSQL
Diffstat (limited to 'lib/arel/visitors')
-rw-r--r-- | lib/arel/visitors/depth_first.rb | 2 | ||||
-rw-r--r-- | lib/arel/visitors/postgresql.rb | 8 | ||||
-rw-r--r-- | lib/arel/visitors/to_sql.rb | 8 |
3 files changed, 18 insertions, 0 deletions
diff --git a/lib/arel/visitors/depth_first.rb b/lib/arel/visitors/depth_first.rb index 7043e5d527..4d2ecfa5e1 100644 --- a/lib/arel/visitors/depth_first.rb +++ b/lib/arel/visitors/depth_first.rb @@ -79,8 +79,10 @@ module Arel alias :visit_Arel_Nodes_Matches :binary alias :visit_Arel_Nodes_NotEqual :binary alias :visit_Arel_Nodes_NotIn :binary + alias :visit_Arel_Nodes_NotRegexp :binary alias :visit_Arel_Nodes_Or :binary alias :visit_Arel_Nodes_OuterJoin :binary + alias :visit_Arel_Nodes_Regexp :binary alias :visit_Arel_Nodes_RightOuterJoin :binary alias :visit_Arel_Nodes_TableAlias :binary alias :visit_Arel_Nodes_Values :binary diff --git a/lib/arel/visitors/postgresql.rb b/lib/arel/visitors/postgresql.rb index 812710181c..49f7482e7d 100644 --- a/lib/arel/visitors/postgresql.rb +++ b/lib/arel/visitors/postgresql.rb @@ -11,6 +11,14 @@ module Arel "#{visit o.left} NOT ILIKE #{visit o.right}" end + def visit_Arel_Nodes_Regexp o + "#{visit o.left} ~ #{visit o.right}" + end + + def visit_Arel_Nodes_NotRegexp o + "#{visit o.left} !~ #{visit o.right}" + end + def visit_Arel_Nodes_DistinctOn o "DISTINCT ON ( #{visit o.expr} )" end diff --git a/lib/arel/visitors/to_sql.rb b/lib/arel/visitors/to_sql.rb index 84a88e1899..c1c192fa1a 100644 --- a/lib/arel/visitors/to_sql.rb +++ b/lib/arel/visitors/to_sql.rb @@ -435,6 +435,14 @@ module Arel "#{visit o.left} NOT LIKE #{visit o.right}" end + def visit_Arel_Nodes_Regexp o + raise NotImplementedError, '~ not implemented for this db' + end + + def visit_Arel_Nodes_NotRegexp o + raise NotImplementedError, '!~ not implemented for this db' + end + def visit_Arel_Nodes_JoinSource o [ (visit(o.left) if o.left), |