1. 26 2月, 2015 1 次提交
    • R
      Add `SchemaMigration.create_table` support any unicode charsets for MySQL. · 3239b6a9
      Ryuta Kamizono 提交于
      MySQL unicode support is not only `utf8mb4`.
      Then, The index length problem is not only `utf8mb4`.
      
      http://dev.mysql.com/doc/refman/5.6/en/charset-unicode.html
      
          SELECT * FROM information_schema.character_sets WHERE maxlen > 3;
          +--------------------+----------------------+------------------+--------+
          | CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION      | MAXLEN |
          +--------------------+----------------------+------------------+--------+
          | utf8mb4            | utf8mb4_general_ci   | UTF-8 Unicode    |      4 |
          | utf16              | utf16_general_ci     | UTF-16 Unicode   |      4 |
          | utf16le            | utf16le_general_ci   | UTF-16LE Unicode |      4 |
          | utf32              | utf32_general_ci     | UTF-32 Unicode   |      4 |
          +--------------------+----------------------+------------------+--------+
      3239b6a9
  2. 25 2月, 2015 2 次提交
  3. 24 2月, 2015 1 次提交
  4. 22 2月, 2015 1 次提交
  5. 20 2月, 2015 2 次提交
  6. 18 2月, 2015 2 次提交
  7. 16 2月, 2015 1 次提交
  8. 12 2月, 2015 1 次提交
  9. 11 2月, 2015 2 次提交
    • R
      The datetime precision with zero should be dumped · 18e0ffe9
      Ryuta Kamizono 提交于
      `precision: 0` was not dumped by f1a0fa9e.
      However, `precision: 0` is valid value for PostgreSQL timestamps.
      18e0ffe9
    • S
      Refactor microsecond precision to be database agnostic · f1a0fa9e
      Sean Griffin 提交于
      The various databases don't actually need significantly different
      handling for this behavior, and they can achieve it without knowing
      about the type of the object.
      
      The old implementation was returning a string, which will cause problems
      such as breaking TZ aware attributes, and making it impossible for the
      adapters to supply their logic for time objects.
      f1a0fa9e
  10. 08 2月, 2015 2 次提交
  11. 07 2月, 2015 1 次提交
    • S
      Allow a symbol to be passed to `attribute`, in place of a type object · 101c19f5
      Sean Griffin 提交于
      The same is not true of `define_attribute`, which is meant to be the low
      level no-magic API that sits underneath. The differences between the two
      APIs are:
      
      - `attribute`
        - Lazy (the attribute will be defined after the schema has loaded)
        - Allows either a type object or a symbol
      - `define_attribute`
        - Runs immediately (might get trampled by schema loading)
        - Requires a type object
      
      This was the last blocker in terms of public interface requirements
      originally discussed for this feature back in May. All the
      implementation blockers have been cleared, so this feature is probably
      ready for release (pending one more look-over by me).
      101c19f5
  12. 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
  13. 19 1月, 2015 1 次提交
    • S
      Add an `:if_exists` option to `drop_table` · 48e99a45
      Stefan Kanev 提交于
      If set to `if_exists: true`, it generates a statement like:
      
          DROP TABLE IF EXISTS posts
      
      This syntax is supported in the popular SQL servers, that is (at least)
      SQLite, PostgreSQL, MySQL, Oracle and MS SQL Sever.
      
      Closes #16366.
      48e99a45
  14. 03 1月, 2015 2 次提交
  15. 02 1月, 2015 2 次提交
  16. 31 12月, 2014 2 次提交
  17. 29 12月, 2014 1 次提交
  18. 28 12月, 2014 1 次提交
  19. 19 12月, 2014 1 次提交
  20. 11 12月, 2014 1 次提交
  21. 04 12月, 2014 1 次提交
    • N
      Failure to rollback t.timestamps when within a change_table migration · b64fb302
      noam 提交于
      When running the following migration:
      
          change_table(:table_name) { |t| t/timestamps }
      
      The following error was produced:
      
          wrong number of arguments (2 for 1) .... /connection_adapters/abstract/schema_statements.rb:851:in `remove_timestamps'
      
      This is due to `arguments` containing an empty hash as its second
      argument.
      b64fb302
  22. 01 12月, 2014 1 次提交
  23. 29 11月, 2014 1 次提交
  24. 25 11月, 2014 1 次提交
  25. 11 11月, 2014 1 次提交
  26. 10 11月, 2014 1 次提交
    • S
      Revert the behavior of booleans in string columns to that of 4.1 · 52c3a16f
      Sean Griffin 提交于
      Why are people assigning booleans to string columns? >_>
      
      We unintentionally changed the behavior on Sqlite3 and PostgreSQL.
      Boolean values should cast to the database's representation of true and
      false. This is 't' and 'f' by default, and "1" and "0" on Mysql. The
      implementation to make the connection adapter specific behavior is hacky
      at best, and should be re-visted once we decide how we actually want to
      separate the concerns related to things that should change based on the
      database adapter.
      
      That said, this isn't something I'd expect to change based on my
      database adapter. We're storing a string, so the way the database
      represents a boolean should be irrelevant. It also seems strange for us
      to give booleans special behavior at all in string columns. Why is
      `to_s` not sufficient? It's inconsistent and confusing. Perhaps we
      should consider deprecating in the future.
      
      Fixes #17571
      52c3a16f
  27. 01 11月, 2014 1 次提交
  28. 30 10月, 2014 1 次提交
  29. 29 10月, 2014 3 次提交
  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