1diff -Npur sqlite-version-3.36.0/ext/expert/sqlite3expert.c sqlite-version-3.36.0-change/ext/expert/sqlite3expert.c 2--- sqlite-version-3.36.0/ext/expert/sqlite3expert.c 2021-06-19 02:36:39.000000000 +0800 3+++ sqlite-version-3.36.0-change/ext/expert/sqlite3expert.c 2022-09-14 23:12:47.929831193 +0800 4@@ -690,11 +690,13 @@ static int idxGetTableInfo( 5 rc = idxPrintfPrepareStmt(db, &p1, pzErrmsg, "PRAGMA table_xinfo=%Q", zTab); 6 while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){ 7 const char *zCol = (const char*)sqlite3_column_text(p1, 1); 8+ const char *zColSeq = 0; 9 nByte += 1 + STRLEN(zCol); 10 rc = sqlite3_table_column_metadata( 11- db, "main", zTab, zCol, 0, &zCol, 0, 0, 0 12+ db, "main", zTab, zCol, 0, &zColSeq, 0, 0, 0 13 ); 14- nByte += 1 + STRLEN(zCol); 15+ if( zColSeq==0 ) zColSeq = "binary"; 16+ nByte += 1 + STRLEN(zColSeq); 17 nCol++; 18 nPk += (sqlite3_column_int(p1, 5)>0); 19 } 20@@ -714,6 +716,7 @@ static int idxGetTableInfo( 21 nCol = 0; 22 while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){ 23 const char *zCol = (const char*)sqlite3_column_text(p1, 1); 24+ const char *zColSeq = 0; 25 int nCopy = STRLEN(zCol) + 1; 26 pNew->aCol[nCol].zName = pCsr; 27 pNew->aCol[nCol].iPk = (sqlite3_column_int(p1, 5)==1 && nPk==1); 28@@ -721,12 +724,13 @@ static int idxGetTableInfo( 29 pCsr += nCopy; 30 31 rc = sqlite3_table_column_metadata( 32- db, "main", zTab, zCol, 0, &zCol, 0, 0, 0 33+ db, "main", zTab, zCol, 0, &zColSeq, 0, 0, 0 34 ); 35 if( rc==SQLITE_OK ){ 36- nCopy = STRLEN(zCol) + 1; 37+ if( zColSeq==0 ) zColSeq = "binary"; 38+ nCopy = STRLEN(zColSeq) + 1; 39 pNew->aCol[nCol].zColl = pCsr; 40- memcpy(pCsr, zCol, nCopy); 41+ memcpy(pCsr, zColSeq, nCopy); 42 pCsr += nCopy; 43 } 44 45