/ Ticket Change Details

Artifact ID: aab555b07ecbd0ff5936e943870d75f51b61fa29
Ticket: 25ee81271091ec27a8c5e00eeffc02949a712cb7
PRAGMA case_sensitive_like=1 fails
User & Date: drh 2011-06-26 23:07:10

  1. Change comment to:

    The following test program reports that the PRAGMA fails:

    #include <stdio.h>
    #include "sqlite3.h"
    int main(void){
      sqlite3 *db3;
      char *errmsg;
      int err;
      sqlite3_open("test.db", &db3);
      err = sqlite3_exec(db3, "PRAGMA case_sensitive_like=1;", 0, 0, &errmsg);
      if (err != SQLITE_OK){
        printf("Error %d: %s\n", err, errmsg);
      return 0;

    This problem was reported on the mailing list by Greg Stein. Investigation shows that the PRAGMA actually works; it simply returns an SQLITE_SCHEMA error code instead of SQLITE_OK. The problem was introduced by check-in [957b2ab67c61] by the removal of "p->expired = 0;" from the sqlite3VdbeAddOp3(). The case_sensitive_like function causes a new LIKE function to be registered, which sets "p->expired = 1", leading to the error. It is unclear (yet) why this problem was not picked up by tests.

  2. Change detected to "Application_Fault"
  3. Change foundin to "3.7.7"
  4. Change severity to "Important"
  5. Change status to "Open"
  6. Change subsystem to "Unknown"
  7. Change title to "PRAGMA case_sensitive_like=1 fails"
  8. Change type to "Code_Defect"