Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | Do not show the error code number of CLI error messages unless the error is something other than 1 (SQLITE_ERROR). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b471601892df98c5103bb55132bbdecf |
User & Date: | drh 2022-02-08 12:13:16.921 |
2022-02-08
| ||
12:24 | comment-only change to sqlite3.h (check-in: f815cf4a5f user: larrybr tags: trunk) | |
12:13 | Do not show the error code number of CLI error messages unless the error is something other than 1 (SQLITE_ERROR). (check-in: b471601892 user: drh tags: trunk) | |
11:52 | Improved error message formatting in the shell. Distinguish between "Parse errors" and "Runtime errors". (check-in: ae3e322a02 user: drh tags: trunk) | |
Changes to src/shell.c.in.
2633 2634 2635 2636 2637 2638 2639 | } /* ** Allocate space and save off string indicating current error. */ static char *save_err_msg( sqlite3 *db, /* Database to query */ | | > > | > > > > > > | < | 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 | } /* ** Allocate space and save off string indicating current error. */ static char *save_err_msg( sqlite3 *db, /* Database to query */ const char *zPhase, /* When the error occcurs */ int rc, /* Error code returned from API */ const char *zSql /* SQL string, or NULL */ ){ char *zErr; char *zContext; sqlite3_str *pStr = sqlite3_str_new(0); sqlite3_str_appendf(pStr, "%s, %s", zPhase, sqlite3_errmsg(db)); if( rc>1 ){ sqlite3_str_appendf(pStr, " (%d)", rc); } zContext = shell_error_context(zSql, db); if( zContext ){ sqlite3_str_appendall(pStr, zContext); sqlite3_free(zContext); } zErr = sqlite3_str_finish(pStr); shell_check_oom(zErr); return zErr; } #ifdef __linux__ /* ** Attempt to display I/O stats on Linux using /proc/PID/io */ |
3774 3775 3776 3777 3778 3779 3780 | #endif while( zSql[0] && (SQLITE_OK == rc) ){ static const char *zStmtSql; rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, &zLeftover); if( SQLITE_OK != rc ){ if( pzErrMsg ){ | | | 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 | #endif while( zSql[0] && (SQLITE_OK == rc) ){ static const char *zStmtSql; rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, &zLeftover); if( SQLITE_OK != rc ){ if( pzErrMsg ){ *pzErrMsg = save_err_msg(db, "in prepare", rc, zSql); } }else{ if( !pStmt ){ /* this happens for a comment or white-space */ zSql = zLeftover; while( IsSpace(zSql[0]) ) zSql++; continue; |
3890 3891 3892 3893 3894 3895 3896 | ** next statement to execute. */ rc2 = sqlite3_finalize(pStmt); if( rc!=SQLITE_NOMEM ) rc = rc2; if( rc==SQLITE_OK ){ zSql = zLeftover; while( IsSpace(zSql[0]) ) zSql++; }else if( pzErrMsg ){ | | | 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 | ** next statement to execute. */ rc2 = sqlite3_finalize(pStmt); if( rc!=SQLITE_NOMEM ) rc = rc2; if( rc==SQLITE_OK ){ zSql = zLeftover; while( IsSpace(zSql[0]) ) zSql++; }else if( pzErrMsg ){ *pzErrMsg = save_err_msg(db, "stepping", rc, 0); } /* clear saved stmt handle */ if( pArg ){ pArg->pStmt = NULL; } } |
Changes to test/shell1.test.
49 50 51 52 53 54 55 | do_test shell1-1.1.2 { catchcmd "test.db \"select+3\" \"select+4\"" "" } {0 {3 4}} # error on extra options do_test shell1-1.1.3 { catchcmd "test.db FOO test.db BAD" ".quit" | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | do_test shell1-1.1.2 { catchcmd "test.db \"select+3\" \"select+4\"" "" } {0 {3 4}} # error on extra options do_test shell1-1.1.3 { catchcmd "test.db FOO test.db BAD" ".quit" } {/1 .Error: in prepare, near "FOO": syntax error*/} # -help do_test shell1-1.2.1 { set res [catchcmd "-help test.db" ""] set rc [lindex $res 0] list $rc \ [regexp {Usage} $res] \ |
74 75 76 77 78 79 80 | catchcmd "-init FOO test.db" "" } {0 {}} do_test shell1-1.3.2 { catchcmd "-init FOO test.db .quit BAD" "" } {0 {}} do_test shell1-1.3.3 { catchcmd "-init FOO test.db BAD .quit" "" | | | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | catchcmd "-init FOO test.db" "" } {0 {}} do_test shell1-1.3.2 { catchcmd "-init FOO test.db .quit BAD" "" } {0 {}} do_test shell1-1.3.3 { catchcmd "-init FOO test.db BAD .quit" "" } {/1 .Error: in prepare, near "BAD": syntax error*/} # -echo print commands before execution do_test shell1-1.4.1 { catchcmd "-echo test.db" "" } {0 {}} # -[no]header turn headers on or off |
Changes to test/shell2.test.
59 60 61 62 63 64 65 | INSERT INTO t5 VALUES(1, 2, 3); CREATE TRIGGER au_tble AFTER UPDATE ON t5 BEGIN UPDATE OR IGNORE t5 SET a = new.a, c = 10; END; UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1; } | | | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | INSERT INTO t5 VALUES(1, 2, 3); CREATE TRIGGER au_tble AFTER UPDATE ON t5 BEGIN UPDATE OR IGNORE t5 SET a = new.a, c = 10; END; UPDATE OR REPLACE t5 SET a = 4 WHERE a = 1; } } {1 {Runtime error near line 9: too many levels of trigger recursion}} # Shell not echoing all commands with echo on. # Ticket [eb620916be]. # Test with echo off |
Changes to test/shell3.test.
64 65 66 67 68 69 70 | catchcmd "foo.db \"CREATE TABLE t1(a); DROP TABLE t1;\"" } {0 {}} do_test shell3-1.6 { catchcmd "foo.db" ".tables" } {0 {}} do_test shell3-1.7 { catchcmd "foo.db \"CREATE TABLE\"" | | | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | catchcmd "foo.db \"CREATE TABLE t1(a); DROP TABLE t1;\"" } {0 {}} do_test shell3-1.6 { catchcmd "foo.db" ".tables" } {0 {}} do_test shell3-1.7 { catchcmd "foo.db \"CREATE TABLE\"" } {1 {Error: in prepare, incomplete input}} #---------------------------------------------------------------------------- # shell3-2.*: Basic tests for running SQL file from command line. # # Run SQL file from command line do_test shell3-2.1 { |
94 95 96 97 98 99 100 | catchcmd "foo.db" "CREATE TABLE t1(a); DROP TABLE t1;" } {0 {}} do_test shell3-2.6 { catchcmd "foo.db" ".tables" } {0 {}} do_test shell3-2.7 { catchcmd "foo.db" "CREATE TABLE" | | | 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | catchcmd "foo.db" "CREATE TABLE t1(a); DROP TABLE t1;" } {0 {}} do_test shell3-2.6 { catchcmd "foo.db" ".tables" } {0 {}} do_test shell3-2.7 { catchcmd "foo.db" "CREATE TABLE" } {1 {Parse error near line 1: incomplete input}} #---------------------------------------------------------------------------- # shell3-3.*: Basic tests for processing odd SQL constructs. # # Run combinations of odd identifiers, comments, semicolon placement |