SQLite

Check-in [7672914b19]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix a segfault in the trigger code. (CVS 884)
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 7672914b196cd55744edda8e5d8f1b7b86f898f9
User & Date: drh 2003-03-27 13:01:29.000
Context
2003-03-27
13:50
Regression tests now work - except for some changes in error message text. The library is now safe to use for experimental work. (CVS 885) (check-in: 8a593e9c2d user: drh tags: trunk)
13:01
Fix a segfault in the trigger code. (CVS 884) (check-in: 7672914b19 user: drh tags: trunk)
12:51
Changes to the "sqlite" structure that allow simultaneous operations on multiple database files. Many regession tests pass - but not all of them. Do not use this version except for debugging SQLite itself. (CVS 1731) (check-in: 9ac71c329e user: drh tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/trigger.c.
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  }
  if( sqliteStrNICmp(tab->zName, "sqlite_", 7)==0 ){
    sqliteSetString(&pParse->zErrMsg,"cannot create trigger on system table",0);
    pParse->nErr++;
    goto trigger_cleanup;
  }
  if( tab->pSelect && tr_tm != TK_INSTEAD ){
    sqliteSetNString(&pParse->zErrMsg, "cannot create ", 
        (tr_tm == TK_BEFORE)?"BEFORE":"AFTER", " trigger on view: ",
        pTableName->a[0].zName, 0);
    goto trigger_cleanup;
  }
  if( !tab->pSelect && tr_tm == TK_INSTEAD ){
    sqliteSetNString(&pParse->zErrMsg, "cannot create INSTEAD OF", 
        " trigger on table: ", pTableName->a[0].zName);
    goto trigger_cleanup;
  }
#ifndef SQLITE_OMIT_AUTHORIZATION
  {
    int code = SQLITE_CREATE_TRIGGER;
    if( tab->iDb==1 ) code = SQLITE_CREATE_TEMP_TRIGGER;
    if( sqliteAuthCheck(pParse, code, zName, tab->zName) ){







|





|
|







82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  }
  if( sqliteStrNICmp(tab->zName, "sqlite_", 7)==0 ){
    sqliteSetString(&pParse->zErrMsg,"cannot create trigger on system table",0);
    pParse->nErr++;
    goto trigger_cleanup;
  }
  if( tab->pSelect && tr_tm != TK_INSTEAD ){
    sqliteSetString(&pParse->zErrMsg, "cannot create ", 
        (tr_tm == TK_BEFORE)?"BEFORE":"AFTER", " trigger on view: ",
        pTableName->a[0].zName, 0);
    goto trigger_cleanup;
  }
  if( !tab->pSelect && tr_tm == TK_INSTEAD ){
    sqliteSetString(&pParse->zErrMsg, "cannot create INSTEAD OF", 
        " trigger on table: ", pTableName->a[0].zName, 0);
    goto trigger_cleanup;
  }
#ifndef SQLITE_OMIT_AUTHORIZATION
  {
    int code = SQLITE_CREATE_TRIGGER;
    if( tab->iDb==1 ) code = SQLITE_CREATE_TEMP_TRIGGER;
    if( sqliteAuthCheck(pParse, code, zName, tab->zName) ){