1. 25 3月, 2015 3 次提交
  2. 12 3月, 2015 1 次提交
  3. 04 3月, 2015 2 次提交
  4. 20 2月, 2015 1 次提交
  5. 19 2月, 2015 1 次提交
  6. 18 2月, 2015 1 次提交
  7. 16 2月, 2015 1 次提交
  8. 12 2月, 2015 1 次提交
  9. 11 2月, 2015 1 次提交
    • S
      Remove most PG specific type subclasses · aafee233
      Sean Griffin 提交于
      The latest version of the PG gem can actually convert the primitives for
      us in C code, which gives a pretty substantial speed up. A few cases
      were only there to add the `infinity` method, which I just put on the
      range type (which is the only place it was used). Floats also needed to
      parse `Infinity` and `NaN`, but it felt reasonable enough to put that on
      the generic form.
      aafee233
  10. 08 2月, 2015 1 次提交
    • S
      rm `Type#text?` · 16629c09
      Sean Griffin 提交于
      This predicate was only to figure out if it's safe to do case
      insensitive comparison, which is only a problem on PG. Turns out, PG can
      just tell us whether we are able to do it or not. If the query turns out
      to be a problem, let's just replace that method with checking the SQL
      type for `text` or `character`. I'd rather not burden the type objects
      with adapter specific knowledge.
      
      The *real* solution, is to deprecate this behavior entirely. The only
      reason we need it is because the `:case_sensitive` option for
      `validates_uniqueness_of` is documented as "this option is ignored for
      non-strings". It makes no sense for us to do that. If the type can't be
      compared in a case insensitive way, the user shouldn't tell us to do
      case insensitive comparison.
      16629c09
  11. 04 2月, 2015 1 次提交
    • S
      rm `Column#cast_type` · 158c7eb1
      Sean Griffin 提交于
      The type from the column is never used, except when being passed to the
      attributes API. While leaving the type on the column wasn't necessarily
      a bad thing, I worry that it's existence there implies that it is
      something which should be used.
      
      During the design and implementation process of the attributes API,
      there have been plenty of cases where getting the "right" type object
      was hard, but I had easy access to the column objects. For any
      contributor who isn't intimately familiar with the intents behind the
      type casting system, grabbing the type from the column might easily seem
      like the "correct" thing to do.
      
      As such, the goal of this change is to express that the column is not
      something that should be used for type casting. The only places that are
      "valid" (at the time of this commit) uses of acquiring a type object
      from the column are fixtures (as the YAML file is going to mirror the
      database more closely than the AR object), and looking up the type
      during schema detection to pass to the attributes API
      
      Many of the failing tests were removed, as they've been made obsolete
      over the last year. All of the PG column tests were testing nothing
      beyond polymorphism. The Mysql2 tests were duplicating the mysql tests,
      since they now share a column class.
      
      The implementation is a little hairy, and slightly verbose, but it felt
      preferable to going back to 20 constructor options for the columns. If
      you are git blaming to figure out wtf I was thinking with them, and have
      a better idea, go for it. Just don't use a type object for this.
      158c7eb1
  12. 28 1月, 2015 1 次提交
    • S
      Remove Relation#bind_params · b06f64c3
      Sean Griffin 提交于
      `bound_attributes` is now used universally across the board, removing
      the need for the conversion layer. These changes are mostly mechanical,
      with the exception of the log subscriber. Additional, we had to
      implement `hash` on the attribute objects, so they could be used as a
      key for query caching.
      b06f64c3
  13. 10 1月, 2015 1 次提交
  14. 04 1月, 2015 1 次提交
    • R
      Prefer `array?` rather than `array` · 3225ebfa
      Ryuta Kamizono 提交于
      Slightly refactoring `PostgreSQLColumn`. `array` should be readonly.
      `default_function` should be initialized by `super`. `sql_type` has been
      removed `[]`. Since we already choose to remove it we should not change.
      3225ebfa
  15. 03 1月, 2015 1 次提交
  16. 29 12月, 2014 1 次提交
  17. 23 12月, 2014 1 次提交
    • S
      Correctly handle limit on int4 and int8 types in PG · b0f2b94d
      Sean Griffin 提交于
      PG doesn't register it's types using the `int(4)` format that others do.
      As such, if we alias `int8` to the other integer types, the range
      information is lost. This is fixed by simply registering it separately.
      
      The other option (which I specifically chose to avoid) is to pass the
      information of the original type that was being aliased as an argument.
      I'd rather avoid that, since an alias should truly be treated the same.
      If we need different behavior for a different type, we should explicitly
      register it with that, and not have a conditional based on aliasing.
      
      Fixes #18144
      
      [Sean Griffin & ysbaddaden]
      b0f2b94d
  18. 06 12月, 2014 1 次提交
    • S
      Correctly respect subtypes for PG arrays and ranges · 670e7941
      Sean Griffin 提交于
      The type registration was simply looking for the OID, and eagerly
      fetching/constructing the sub type when it was registered. However,
      numeric types have additional parameters which are extracted from the
      actual SQL string of the type during lookup, and can have their behavior
      change based on the result.
      
      We simply need to use the block form of registration, and look up the
      subtype lazily instead.
      
      Fixes #17935
      670e7941
  19. 02 12月, 2014 1 次提交
  20. 01 12月, 2014 1 次提交
  21. 21 11月, 2014 1 次提交
    • C
      Wrap code snippets in +, not backticks, in sdoc · 5aedabe8
      claudiob 提交于
      I grepped the source code for code snippets wrapped in backticks in the comments
      and replaced the backticks with plus signs so they are correctly displayed in
      the Rails documentation.
      
      [ci skip]
      5aedabe8
  22. 20 11月, 2014 1 次提交
  23. 17 11月, 2014 1 次提交
  24. 14 11月, 2014 1 次提交
  25. 05 11月, 2014 1 次提交
  26. 02 11月, 2014 1 次提交
  27. 30 10月, 2014 2 次提交
  28. 21 10月, 2014 1 次提交
    • C
      Remove duplicate 'select' database statement · ec981aa1
      claudiob 提交于
      The `select` method has the same definition in almost all database
      adapters, so it can be moved from the database-specific adapters
      (PostgreSQl, MySQL, SQLite) to the abstract `database_statement`:
      
      ```ruby
      def select(sql, name = nil, binds = [])
        exec_query(sql, name, binds)
      end
      ```
      
      ---
      
      More details about this commit: the only two DB-specific adapters
      that have a different definition of `select` are MySQLAdapter and
      MySQL2Adapter.
      
      In MySQLAdapter, `select` invokes `exec_query(sql, name, binds)`, so
      calling `super` achieves the same goal with less repetition.
      
      In MySQL2Adapter, `select` invokes `exec_query(sql, name)`, that is,
      it does not pass the `binds` parameter like other methods do. However,
      [MySQL2Adapter's `exec_query`](https://github.com/rails/rails/blob/74a527cc63ef56f3d0a42cf638299958dc7cb08c/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb#L228L231)
      works exactly the same whether this parameters is passed or not, so the output
      does not change:
      
      ```ruby
      def exec_query(sql, name = 'SQL', binds = [])
        result = execute(sql, name)
        ActiveRecord::Result.new(result.fields, result.to_a)
      end
      ```
      ec981aa1
  29. 16 10月, 2014 1 次提交
  30. 23 9月, 2014 1 次提交
    • A
      add a truncate method to the connection · 9a4e183f
      Aaron Patterson 提交于
      it doesn't work on SQLite3 since it doesn't support truncate, but that's
      OK.  If you call truncate on the connection, you're now bound to that
      database (same as if you use hstore or any other db specific feature).
      9a4e183f
  31. 09 9月, 2014 1 次提交
  32. 05 9月, 2014 1 次提交
  33. 25 7月, 2014 1 次提交
  34. 07 7月, 2014 1 次提交
  35. 03 7月, 2014 1 次提交
  36. 29 6月, 2014 1 次提交
    • S
      Always pass a column with a type object to quote · b404613c
      Sean Griffin 提交于
      The only case where we got a column that was not `nil`, but did not
      respond to `cast_type` was when type casting the default value during
      schema creation. We can look up the cast type, and add that object to
      the column definition. Will allow us to consistently rely on the type
      objects for type casting in all directions.
      b404613c