Skip to content

Commit

Permalink
Updated gitignore.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrcsparker committed Jun 5, 2013
1 parent de5871f commit 6554660
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 75 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ tmp
.yardoc
_yardoc
doc/
lib/arjdbc/teradata/teradata_java.jar
.idea/
classes/
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
source "http://rubygems.org"
source 'http://rubygems.org'

gemspec
4 changes: 2 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
activerecord-jdbcteradata-adapter (0.4.0)
activerecord-jdbcteradata-adapter (0.4.1)
activerecord
activerecord-jdbc-adapter
jdbc-teradata
Expand All @@ -26,7 +26,7 @@ GEM
diff-lcs (1.2.4)
i18n (0.6.1)
jdbc-teradata (0.3.0)
multi_json (1.7.3)
multi_json (1.7.4)
rake (10.0.4)
rspec (2.13.0)
rspec-core (~> 2.13.0)
Expand Down
20 changes: 10 additions & 10 deletions activerecord-jdbcteradata-adapter.gemspec
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
Gem::Specification.new do |s|
s.name = "activerecord-jdbcteradata-adapter"
s.version = "0.4.1"
s.authors = ["Chris Parker"]
s.email = [ "mrcsparker@gmail.com"]
s.homepage = "https://github.com/mrcsparker/activerecord-jdbcteradata-adapter"
s.name = 'activerecord-jdbcteradata-adapter'
s.version = '0.4.1'
s.authors = ['Chris Parker']
s.email = %w(mrcsparker@gmail.com)
s.homepage = 'https://github.com/mrcsparker/activerecord-jdbcteradata-adapter'
s.summary = %q{Teradata JDBC driver for JRuby on Rails.}
s.description = %q{Install this gem and require 'teradata' with JRuby on Rails.}
s.rubyforge_project = "activerecord-jdbcteradata-adapter"

s.rubyforge_project = 'activerecord-jdbcteradata-adapter'

s.files = %w[
Gemfile
Gemfile.lock
Expand All @@ -29,8 +29,8 @@ Gem::Specification.new do |s|

s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
s.require_paths = ["lib"]
s.require_paths = %w(lib)

s.add_development_dependency 'rake'
s.add_development_dependency 'rspec'
s.add_dependency 'activerecord-jdbc-adapter'
Expand Down
8 changes: 4 additions & 4 deletions java_compile.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
CLASSPATH = Dir["#{Java::java.lang.System.getProperty('jruby.home')}/lib/*.jar"].join(File::PATH_SEPARATOR)

# Add to classpath the ActiveRecord JDBC Adapter library to compile against
gem_name = "activerecord-jdbc-adapter"
gem_name = 'activerecord-jdbc-adapter'
begin
arjdbc_spec = Gem::Specification.find_by_name(gem_name)
rescue Gem::LoadError
Expand All @@ -10,11 +10,11 @@
end

gem_root = arjdbc_spec.gem_dir
gem_lib = gem_root + "/lib"
CLASSPATH << File::PATH_SEPARATOR + gem_lib + "/arjdbc/jdbc/adapter_java.jar"
gem_lib = gem_root + '/lib'
CLASSPATH << File::PATH_SEPARATOR + gem_lib + '/arjdbc/jdbc/adapter_java.jar'

jar_name = File.join(*%w(lib arjdbc teradata teradata_java.jar))
directory_name = "classes"
directory_name = 'classes'

cmd = "mkdir #{directory_name}"
system cmd
Expand Down
26 changes: 13 additions & 13 deletions lib/arel/visitors/teradata.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def order(*expr)
d = s =~ /(ASC|DESC)\Z/i ? $1.upcase : nil
e = d.nil? ? s : s.mb_chars[0...-d.length].strip
e = Arel.sql(e)
d && d == "DESC" ? Arel::Nodes::Descending.new(e) : Arel::Nodes::Ascending.new(e)
d && d == 'DESC' ? Arel::Nodes::Descending.new(e) : Arel::Nodes::Ascending.new(e)
end
else
e = Arel.sql(x.to_s)
Expand Down Expand Up @@ -155,10 +155,10 @@ def visit_Arel_Nodes_SelectStatementWithOutOffset(o, windowed=false)
elsif top_one_everything_for_through_join?(o)
projections = projections.map { |x| projection_without_expression(x) }
end
[ ("SELECT" if !windowed),
[ ('SELECT' if !windowed),
(visit(core.set_quantifier) if core.set_quantifier && !windowed),
(visit(o.limit) if o.limit && !windowed),
(projections.map{ |x| v = visit(x); v == "1" ? "1 AS __wrp" : v }.join(', ')),
(projections.map{ |x| v = visit(x); v == '1' ? '1 AS __wrp' : v }.join(', ')),
(source_with_lock_for_select_statement(o)),
("WHERE #{core.wheres.map{ |x| visit(x) }.join ' AND ' }" unless core.wheres.empty?),
("GROUP BY #{groups.map { |x| visit x }.join ', ' }" unless groups.empty?),
Expand All @@ -171,34 +171,34 @@ def visit_Arel_Nodes_SelectStatementWithOffset(o)
core = o.cores.first
o.limit ||= Arel::Nodes::Limit.new(214748364)
orders = rowtable_orders(o)
[ "SELECT",
[ 'SELECT',
(visit(o.limit) if o.limit && !windowed_single_distinct_select_statement?(o)),
(rowtable_projections(o).map{ |x| visit(x) }.join(', ')),
"FROM (",
'FROM (',
"SELECT #{core.set_quantifier ? 'DISTINCT DENSE_RANK()' : 'ROW_NUMBER()'} OVER (ORDER BY #{orders.map{ |x| visit(x) }.join(', ')}) AS __rn,",
visit_Arel_Nodes_SelectStatementWithOutOffset(o,true),
") AS __rnt",
') AS __rnt',
(visit(o.offset) if o.offset),
"ORDER BY __rnt.__rn ASC"
'ORDER BY __rnt.__rn ASC'
].compact.join ' '
end

def visit_Arel_Nodes_SelectStatementForComplexCount(o)
core = o.cores.first
o.limit.expr = Arel.sql("#{o.limit.expr} + #{o.offset ? o.offset.expr : 0}") if o.limit
orders = rowtable_orders(o)
[ "SELECT COUNT(count) AS count_id",
"FROM (",
"SELECT",
[ 'SELECT COUNT(count) AS count_id',
'FROM (',
'SELECT',
(visit(o.limit) if o.limit),
"ROW_NUMBER() OVER (ORDER BY #{orders.map{ |x| visit(x) }.join(', ')}) AS __rn,",
"1 AS count",
'1 AS count',
(source_with_lock_for_select_statement(o)),
("WHERE #{core.wheres.map{ |x| visit(x) }.join ' AND ' }" unless core.wheres.empty?),
("GROUP BY #{core.groups.map { |x| visit x }.join ', ' }" unless core.groups.empty?),
(visit(core.having) if core.having),
("ORDER BY #{o.orders.map{ |x| visit(x) }.join(', ')}" if !o.orders.empty?),
") AS __rnt",
') AS __rnt',
(visit(o.offset) if o.offset)
].compact.join ' '
end
Expand Down Expand Up @@ -254,7 +254,7 @@ def windowed_single_distinct_select_statement?(o)
end

def single_distinct_select_everything_statement?(o)
single_distinct_select_statement?(o) && visit(o.cores.first.projections.first).ends_with?(".*")
single_distinct_select_statement?(o) && visit(o.cores.first.projections.first).ends_with?('.*')
end

def top_one_everything_for_through_join?(o)
Expand Down
90 changes: 45 additions & 45 deletions lib/arjdbc/teradata/adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module Teradata
def self.column_selector
[ /teradata/i, lambda { |cfg, column| column.extend(::ArJdbc::Teradata::Column) } ]
end

## ActiveRecord::ConnectionAdapters::JdbcAdapter

#- jdbc_connection_class
Expand All @@ -17,14 +17,14 @@ def self.jdbc_connection_class
#- jdbc_column_class

#- jdbc_connection

#- adapter_spec

#+ modify_types
def modify_types(types)
super(types)
types[:primary_key] = 'INTEGER PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -2147483647 MAXVALUE 1000000000 NO CYCLE)',
types[:string][:limit] = 255
types[:string][:limit] = 255
types[:integer][:limit] = nil
types
end
Expand All @@ -41,7 +41,7 @@ def adapter_name
end

#- self.visitor_for

#+ self.arel2_visitors
def self.arel2_visitors(config)
{ 'teradata' => Arel::Visitors::Teradata, 'jdbcteradata' => Arel::Visitors::Teradata }
Expand All @@ -58,20 +58,22 @@ def supports_migrations?

#+ native_database_types
def native_database_types
super.merge({
:primary_key => 'INTEGER PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -2147483647 MAXVALUE 1000000000 NO CYCLE)',
:string => { :name => 'VARCHAR', :limit => 255 },
:integer => { :name => 'INTEGER'},
:float => { :name => 'FLOAT'},
:decimal => { :name => 'DECIMAL'},
:datetime => { :name => 'TIMESTAMP'},
:timestamp => { :name => 'TIMESTAMP'},
:time => { :name => 'TIMESTAMP'},
:date => { :name => 'DATE'},
:binary => { :name => 'BLOB'},
:boolean => { :name => 'BYTEINT'},
:raw => { :name => 'BYTE'}
})
super.merge(
{
:primary_key => 'INTEGER PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -2147483647 MAXVALUE 1000000000 NO CYCLE)',
:string => { :name => 'VARCHAR', :limit => 255 },
:integer => { :name => 'INTEGER'},
:float => { :name => 'FLOAT'},
:decimal => { :name => 'DECIMAL'},
:datetime => { :name => 'TIMESTAMP'},
:timestamp => { :name => 'TIMESTAMP'},
:time => { :name => 'TIMESTAMP'},
:date => { :name => 'DATE'},
:binary => { :name => 'BLOB'},
:boolean => { :name => 'BYTEINT'},
:raw => { :name => 'BYTE'}
}
)
end

#- database_name
Expand Down Expand Up @@ -177,13 +179,11 @@ def indexes(table_name, name = nil, schema_name = nil)
result = select_rows('SELECT' <<
' DatabaseName, TableName, ColumnName, IndexType, IndexName, UniqueFlag' <<
' FROM DBC.Indices' <<
" WHERE TableName = '#{table}' AND DatabaseName = '#{schema}'")
" WHERE TableName = '#{table}' AND DatabaseName = '#{schema}'")

result.map do |row|
idx_database_name = row[0].to_s.strip
idx_table_name = row[1].to_s.strip
idx_column_name = row[2].to_s.strip
idx_index_type = row[3].to_s.strip
idx_index_name = row[4].to_s.strip
idx_unique_flag = row[5].to_s.strip

Expand All @@ -207,7 +207,7 @@ def indexes(table_name, name = nil, schema_name = nil)
#- write_large_object

#- pk_and_sequence_for

#- primary_key

#- primary_keys
Expand All @@ -219,7 +219,7 @@ def indexes(table_name, name = nil, schema_name = nil)
#- table_exists?

#- index_exists?

#- columns
def columns(table_name, name = nil)
return false unless table_name
Expand All @@ -236,11 +236,11 @@ def columns(table_name, name = nil)
#- create_table

#- change_table

#+ rename_table

#- drop_table

#- add_column

#- remove_column
Expand All @@ -255,21 +255,21 @@ def remove_column(table_name, *column_names) #:nodoc:
# cannot be shortened, one column type cannot be converted to another.
def change_column(table_name, column_name, type, options = {}) #:nodoc:
change_column_sql = "ALTER TABLE #{quote_table_name(table_name)} " <<
"ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit])}"
"ADD #{quote_column_name(column_name)} #{type_to_sql(type, options[:limit])}"
add_column_options!(change_column_sql, options)
execute(change_column_sql)
end

#+ change_column_default
def change_column_default(table_name, column_name, default) #:nodoc:
execute "ALTER TABLE #{quote_table_name(table_name)} " +
"ADD #{quote_column_name(column_name)} DEFAULT #{quote(default)}"
execute "ALTER TABLE #{quote_table_name(table_name)} " +
"ADD #{quote_column_name(column_name)} DEFAULT #{quote(default)}"
end

#+ rename_column
def rename_column(table_name, column_name, new_column_name) #:nodoc:
execute "ALTER TABLE #{quote_table_name(table_name)} " <<
"RENAME COLUMN #{quote_column_name(column_name)} to #{quote_column_name(new_column_name)}"
"RENAME COLUMN #{quote_column_name(column_name)} to #{quote_column_name(new_column_name)}"
end

#- add_index
Expand All @@ -291,7 +291,7 @@ def rename_column(table_name, column_name, new_column_name) #:nodoc:
#- assume_migrated_upto_version

#- type_to_sql

#- add_column_options!

#- distinct
Expand All @@ -304,10 +304,10 @@ module Column
# Maps Teradata types of logical Rails types
def simplified_type(field_type)
case field_type
when /^timestamp with(?:out)? time zone$/ then :datetime
when /byteint/i then :boolean
else
super
when /^timestamp with(?:out)? time zone$/ then :datetime
when /byteint/i then :boolean
else
super
end
end
end # column
Expand All @@ -321,13 +321,13 @@ def type_cast
def quote(value, column = nil)
return value.quoted_id if value.respond_to?(:quoted_id)
case value
when String
%Q{'#{quote_string(value)}'}
when TrueClass
'1'
when FalseClass
'0'
else super
when String
%Q{'#{quote_string(value)}'}
when TrueClass
'1'
when FalseClass
'0'
else super
end
end

Expand All @@ -351,9 +351,9 @@ def add_index(table_name, column_name, options = {})
index_name, index_type, index_columns = add_index_options(table_name, column_name, options)
execute "CREATE #{index_type} INDEX #{quote_column_name(index_name)} (#{index_columns}) ON #{quote_table_name(table_name)}"
end

IDENTIFIER_LENGTH = 30 # :nodoc:

# maximum length of Teradata identifiers is 30
def table_alias_length; IDENTIFIER_LENGTH
end # :nodoc:
Expand Down Expand Up @@ -422,7 +422,7 @@ def quote_column_name(name)
quoted
end
end

end
end

0 comments on commit 6554660

Please sign in to comment.