• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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