Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-36920 SQLite support for 3.9+
  3. MDL-36928

SQLite unit test failure: doesn't throw exceptions when putting strings into int column

XMLWordPrintable

    • MOODLE_23_STABLE

      This appears to be a design decision of SQLite rather than a bug as such.

      http://www.sqlite.org/faq.html#q3

      (3) SQLite lets me insert a string into a database column of type integer!

      This is a feature, not a bug. SQLite uses dynamic typing. It does not enforce data type constraints. Any data can be inserted into any column. You can put arbitrary length strings into integer columns, floating point numbers in boolean columns, or dates in character columns. The datatype you assign to a column in the CREATE TABLE command does not restrict what data can be put into that column. Every column is able to hold an arbitrary length string. (There is one exception: Columns of type INTEGER PRIMARY KEY may only hold a 64-bit signed integer. An error will result if you try to put anything other than an integer into an INTEGER PRIMARY KEY column.)

      But SQLite does use the declared type of a column as a hint that you prefer values in that format. So, for example, if a column is of type INTEGER and you try to insert a string into that column, SQLite will attempt to convert the string into an integer. If it can, it inserts the integer instead. If not, it inserts the string. This feature is called type affinity.

      Not quite sure how to proceed. Test if we're using SQLite as a database and skip this test?

            moodle.com Moodle HQ
            bawjaws David Scotson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved:

                Error rendering 'clockify-timesheets-time-tracking-reports:timer-sidebar'. Please contact your Jira administrators.