Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a bug in the command-line shell for ".mode insert" on UTF16 databases with BLOB values. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d8fdc7821808e2bfa048144ee3015b74 |
User & Date: | drh 2013-09-04 16:08:50.014 |
Context
2013-09-04
| ||
16:38 | Add tests to improve coverage when SQLITE_ENABLE_STAT3 is defined. (check-in: f929e9b41f user: dan tags: trunk) | |
16:08 | Fix a bug in the command-line shell for ".mode insert" on UTF16 databases with BLOB values. (check-in: d8fdc78218 user: drh tags: trunk) | |
15:15 | The sqlite3Stat4ProbeSetValue() routine should always return results using the database encoding. (check-in: eb21663271 user: drh tags: trunk) | |
Changes
Changes to src/shell.c.
︙ | ︙ | |||
1190 1191 1192 1193 1194 1195 1196 | void *pData = sqlite3_malloc(3*nCol*sizeof(const char*) + 1); if( !pData ){ rc = SQLITE_NOMEM; }else{ char **azCols = (char **)pData; /* Names of result columns */ char **azVals = &azCols[nCol]; /* Results */ int *aiTypes = (int *)&azVals[nCol]; /* Result types */ | | > > | > | > | 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 | void *pData = sqlite3_malloc(3*nCol*sizeof(const char*) + 1); if( !pData ){ rc = SQLITE_NOMEM; }else{ char **azCols = (char **)pData; /* Names of result columns */ char **azVals = &azCols[nCol]; /* Results */ int *aiTypes = (int *)&azVals[nCol]; /* Result types */ int i, x; assert(sizeof(int) <= sizeof(char *)); /* save off ptrs to column names */ for(i=0; i<nCol; i++){ azCols[i] = (char *)sqlite3_column_name(pStmt, i); } do{ /* extract the data and data types */ for(i=0; i<nCol; i++){ aiTypes[i] = x = sqlite3_column_type(pStmt, i); if( x==SQLITE_BLOB && pArg->mode==MODE_Insert ){ azVals[i] = ""; }else{ azVals[i] = (char*)sqlite3_column_text(pStmt, i); } if( !azVals[i] && (aiTypes[i]!=SQLITE_NULL) ){ rc = SQLITE_NOMEM; break; /* from for */ } } /* end for */ /* if data and types extracted successfully... */ |
︙ | ︙ |
Changes to test/shell1.test.
︙ | ︙ | |||
718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 | catchcmd {test.db} {.print "this\nis\ta\\test" 'this\nis\ta\\test'} } [list 0 "this\nis\ta\\test this\\nis\\ta\\\\test"] # Test the output of the ".dump" command # do_test shell1-4.1 { db eval { CREATE TABLE t1(x); INSERT INTO t1 VALUES(null), (''), (1), (2.25), ('hello'), (x'807f'); } catchcmd test.db {.dump} } {0 {PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE t1(x); | > > > > | 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 | catchcmd {test.db} {.print "this\nis\ta\\test" 'this\nis\ta\\test'} } [list 0 "this\nis\ta\\test this\\nis\\ta\\\\test"] # Test the output of the ".dump" command # do_test shell1-4.1 { db close forcedelete test.db sqlite3 db test.db db eval { PRAGMA encoding=UTF16; CREATE TABLE t1(x); INSERT INTO t1 VALUES(null), (''), (1), (2.25), ('hello'), (x'807f'); } catchcmd test.db {.dump} } {0 {PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE t1(x); |
︙ | ︙ | |||
748 749 750 751 752 753 754 755 756 757 758 759 760 761 | INSERT INTO t1 VALUES(2.25); INSERT INTO t1 VALUES('hello'); INSERT INTO t1 VALUES(X'807f');}} # Test the output of ".mode tcl" # do_test shell1-4.3 { catchcmd test.db ".mode tcl\nselect * from t1;" } {0 {"" "" "1" "2.25" "hello" "\200\177"}} | > > > > > > > > | 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 | INSERT INTO t1 VALUES(2.25); INSERT INTO t1 VALUES('hello'); INSERT INTO t1 VALUES(X'807f');}} # Test the output of ".mode tcl" # do_test shell1-4.3 { db close forcedelete test.db sqlite3 db test.db db eval { PRAGMA encoding=UTF8; CREATE TABLE t1(x); INSERT INTO t1 VALUES(null), (''), (1), (2.25), ('hello'), (x'807f'); } catchcmd test.db ".mode tcl\nselect * from t1;" } {0 {"" "" "1" "2.25" "hello" "\200\177"}} |
︙ | ︙ |