45 lines
1.8 KiB
Diff
45 lines
1.8 KiB
Diff
diff -Npur sqlite-version-3.36.0/ext/expert/sqlite3expert.c sqlite-version-3.36.0-change/ext/expert/sqlite3expert.c
|
|
--- sqlite-version-3.36.0/ext/expert/sqlite3expert.c 2021-06-19 02:36:39.000000000 +0800
|
|
+++ sqlite-version-3.36.0-change/ext/expert/sqlite3expert.c 2022-09-14 23:12:47.929831193 +0800
|
|
@@ -690,11 +690,13 @@ static int idxGetTableInfo(
|
|
rc = idxPrintfPrepareStmt(db, &p1, pzErrmsg, "PRAGMA table_xinfo=%Q", zTab);
|
|
while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){
|
|
const char *zCol = (const char*)sqlite3_column_text(p1, 1);
|
|
+ const char *zColSeq = 0;
|
|
nByte += 1 + STRLEN(zCol);
|
|
rc = sqlite3_table_column_metadata(
|
|
- db, "main", zTab, zCol, 0, &zCol, 0, 0, 0
|
|
+ db, "main", zTab, zCol, 0, &zColSeq, 0, 0, 0
|
|
);
|
|
- nByte += 1 + STRLEN(zCol);
|
|
+ if( zColSeq==0 ) zColSeq = "binary";
|
|
+ nByte += 1 + STRLEN(zColSeq);
|
|
nCol++;
|
|
nPk += (sqlite3_column_int(p1, 5)>0);
|
|
}
|
|
@@ -714,6 +716,7 @@ static int idxGetTableInfo(
|
|
nCol = 0;
|
|
while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){
|
|
const char *zCol = (const char*)sqlite3_column_text(p1, 1);
|
|
+ const char *zColSeq = 0;
|
|
int nCopy = STRLEN(zCol) + 1;
|
|
pNew->aCol[nCol].zName = pCsr;
|
|
pNew->aCol[nCol].iPk = (sqlite3_column_int(p1, 5)==1 && nPk==1);
|
|
@@ -721,12 +724,13 @@ static int idxGetTableInfo(
|
|
pCsr += nCopy;
|
|
|
|
rc = sqlite3_table_column_metadata(
|
|
- db, "main", zTab, zCol, 0, &zCol, 0, 0, 0
|
|
+ db, "main", zTab, zCol, 0, &zColSeq, 0, 0, 0
|
|
);
|
|
if( rc==SQLITE_OK ){
|
|
- nCopy = STRLEN(zCol) + 1;
|
|
+ if( zColSeq==0 ) zColSeq = "binary";
|
|
+ nCopy = STRLEN(zColSeq) + 1;
|
|
pNew->aCol[nCol].zColl = pCsr;
|
|
- memcpy(pCsr, zCol, nCopy);
|
|
+ memcpy(pCsr, zColSeq, nCopy);
|
|
pCsr += nCopy;
|
|
}
|
|
|