Fossil

Check-in [beaf897cb1]
Login

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

Overview
Comment:Allow recursive queries in user input.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: beaf897cb1ab47d5b73f91f98ee7eeaf94f62f7e
User & Date: jan.nijtmans 2015-01-22 19:49:00.408
Context
2015-01-22
22:52
Make table sorting (by clicking on column headers) stable. In other words, identical values in the column being sorted preserve their prior relative order. Patch suggested by Jacek Cała. ... (check-in: fe61f4958d user: drh tags: trunk)
19:49
Allow recursive queries in user input. ... (check-in: beaf897cb1 user: jan.nijtmans tags: trunk)
19:16
Allow "with" as well as "select" to be used in ticket report queries, as suggested by Sean Woods on the ML. ... (check-in: ae72a652a7 user: jan.nijtmans tags: trunk)
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/report.c.
169
170
171
172
173
174
175

176
177
178
179
180
181
182
  int rc = SQLITE_OK;
  if( *(char**)pError ){
    /* We've already seen an error.  No need to continue. */
    return SQLITE_OK;
  }
  switch( code ){
    case SQLITE_SELECT:

    case SQLITE_FUNCTION: {
      break;
    }
    case SQLITE_READ: {
      static const char *const azAllowed[] = {
         "ticket",
         "ticketchng",







>







169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
  int rc = SQLITE_OK;
  if( *(char**)pError ){
    /* We've already seen an error.  No need to continue. */
    return SQLITE_OK;
  }
  switch( code ){
    case SQLITE_SELECT:
    case SQLITE_RECURSIVE:
    case SQLITE_FUNCTION: {
      break;
    }
    case SQLITE_READ: {
      static const char *const azAllowed[] = {
         "ticket",
         "ticketchng",
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
        *(char**)pError = mprintf("access to table \"%s\" is restricted",zArg1);
        rc = SQLITE_DENY;
      }else if( !g.perm.RdAddr && strncmp(zArg2, "private_", 8)==0 ){
        rc = SQLITE_IGNORE;
      }
      break;
    }
    case SQLITE_RECURSIVE: {
      *(char**)pError = mprintf("recursive queries are not allowed");
      rc = SQLITE_DENY;
      break;
    }
    default: {
      *(char**)pError = mprintf("only SELECT statements are allowed");
      rc = SQLITE_DENY;
      break;
    }
  }
  return rc;







<
<
<
<
<







200
201
202
203
204
205
206





207
208
209
210
211
212
213
        *(char**)pError = mprintf("access to table \"%s\" is restricted",zArg1);
        rc = SQLITE_DENY;
      }else if( !g.perm.RdAddr && strncmp(zArg2, "private_", 8)==0 ){
        rc = SQLITE_IGNORE;
      }
      break;
    }





    default: {
      *(char**)pError = mprintf("only SELECT statements are allowed");
      rc = SQLITE_DENY;
      break;
    }
  }
  return rc;