Class: Sequel::ODBC::MSSQL::Dataset

Inherits:
Dataset show all
Defined in:
lib/sequel_core/adapters/odbc_mssql.rb

Constant Summary

Constants inherited from Dataset

Dataset::BOOL_FALSE, Dataset::BOOL_TRUE, Dataset::ODBC_DATE_FORMAT, Dataset::ODBC_TIMESTAMP_AFTER_SECONDS, Dataset::ODBC_TIMESTAMP_FORMAT, Dataset::UNTITLED_COLUMN

Constants inherited from Dataset

Dataset::AND_SEPARATOR, Dataset::BOOL_FALSE, Dataset::BOOL_TRUE, Dataset::COLUMN_CHANGE_OPTS, Dataset::COLUMN_REF_RE1, Dataset::COLUMN_REF_RE2, Dataset::COLUMN_REF_RE3, Dataset::COMMA_SEPARATOR, Dataset::COUNT_FROM_SELF_OPTS, Dataset::COUNT_OF_ALL_AS_COUNT, Dataset::DATASET_CLASSES, Dataset::DATE_FORMAT, Dataset::MUTATION_METHODS, Dataset::NOTIMPL_MSG, Dataset::NULL, Dataset::N_ARITY_OPERATORS, Dataset::QUESTION_MARK, Dataset::STOCK_COUNT_OPTS, Dataset::STOCK_TRANSFORMS, Dataset::TIMESTAMP_FORMAT, Dataset::TWO_ARITY_OPERATORS, Dataset::WILDCARD

Instance Attribute Summary

Attributes inherited from Dataset

#db, #opts, #quote_identifiers, #row_proc

Instance Method Summary collapse

Methods inherited from Dataset

#convert_odbc_value, #delete, #fetch_rows, #hash_row, #insert, #literal, #update

Methods inherited from Dataset

#<<, #[], #[]=, #aliased_expression_sql, #all, #and, #as, #avg, #case_expression_sql, #clone, #column_all_sql, #columns, #columns!, #count, #create_or_replace_view, #create_view, dataset_classes, #def_mutation_method, def_mutation_method, #delete, #delete_sql, #each, #each_page, #empty?, #except, #exclude, #exists, #fetch_rows, #filter, #first, #first_source, #from, #from_self, #function_sql, #get, #graph, #grep, #group, #group_and_count, #having, inherited, #initialize, #insert, #insert_multiple, #insert_sql, #inspect, #intersect, #interval, #invert, #irregular_function_sql, #join_clause_sql, #join_on_clause_sql, #join_table, #join_using_clause_sql, #last, #limit, #literal, #map, #max, #min, #model_classes, #multi_insert, #multi_insert_sql, #naked, #or, #order, #order_more, #ordered_expression_sql, #paginate, #polymorphic_key, #print, #qualified_identifier_sql, #query, #quote_identifier, #quote_identifiers?, #quoted_identifier, #range, #reverse_order, #select, #select_all, #select_more, #set, #set_graph_aliases, #set_model, #single_record, #single_value, #subscript_sql, #sum, #symbol_to_column_ref, #table_exists?, #to_csv, #to_hash, #transform, #transform_load, #transform_save, #unfiltered, #union, #uniq, #unordered, #update, #update_sql

Methods included from Enumerable

#send_each

Constructor Details

This class inherits a constructor from Sequel::Dataset

Instance Method Details

#complex_expression_sql(op, args) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/sequel_core/adapters/odbc_mssql.rb', line 95

def complex_expression_sql(op, args)
  case op
  when :'||'
    super(:+, args)
  else
    super(op, args)
  end
end

#full_text_search(cols, terms, opts = {}) ⇒ Object



91
92
93
# File 'lib/sequel_core/adapters/odbc_mssql.rb', line 91

def full_text_search(cols, terms, opts = {})
  filter("CONTAINS (#{literal(cols)}, #{literal(terms)})")
end

#nolockObject

Allows you to do .nolock on a query



18
19
20
# File 'lib/sequel_core/adapters/odbc_mssql.rb', line 18

def nolock
  clone(:with => "(NOLOCK)")
end

#select_sql(opts = nil) ⇒ Object Also known as: sql

Formats a SELECT statement using the given options and the dataset options.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/sequel_core/adapters/odbc_mssql.rb', line 24

def select_sql(opts = nil)
  opts = opts ? @opts.merge(opts) : @opts

  if sql = opts[:sql]
    return sql
  end

  # ADD TOP to SELECT string for LIMITS
  if limit = opts[:limit]
    top = "TOP #{limit} "
    raise Error, "Offset not supported" if opts[:offset]
  end

  columns = opts[:select]
  select_columns = columns ? column_list(columns) : WILDCARD

  if distinct = opts[:distinct]
    distinct_clause = distinct.empty? ? "DISTINCT" : "DISTINCT ON (#{expression_list(distinct)})"
    sql = "SELECT #{top}#{distinct_clause} #{select_columns}"
  else
    sql = "SELECT #{top}#{select_columns}"
  end

  if opts[:from]
    sql << " FROM #{source_list(opts[:from])}"
  end

  # ADD WITH to SELECT string for NOLOCK
  if with = opts[:with]
    sql << " WITH #{with}"
  end

  if join = opts[:join]
    join.each{|j| sql << literal(j)}
  end

  if where = opts[:where]
    sql << " WHERE #{literal(where)}"
  end

  if group = opts[:group]
    sql << " GROUP BY #{expression_list(group)}"
  end

  if order = opts[:order]
    sql << " ORDER BY #{expression_list(order)}"
  end

  if having = opts[:having]
    sql << " HAVING #{literal(having)}"
  end

  if union = opts[:union]
    sql << (opts[:union_all] ? \
      " UNION ALL #{union.sql}" : " UNION #{union.sql}")
  elsif intersect = opts[:intersect]
    sql << (opts[:intersect_all] ? \
      " INTERSECT ALL #{intersect.sql}" : " INTERSECT #{intersect.sql}")
  elsif except = opts[:except]
    sql << (opts[:except_all] ? \
      " EXCEPT ALL #{except.sql}" : " EXCEPT #{except.sql}")
  end

  sql
end