Fossil SCM
Minor performance optimization on wiki rendering.
Commit
25d99f2698356f0cb470116f1267819771595a29
Parent
10e0d0b256a0f8b…
1 file changed
+9
-1
+9
-1
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -1017,14 +1017,22 @@ | ||
| 1017 | 1017 | ** repository. |
| 1018 | 1018 | */ |
| 1019 | 1019 | static int in_this_repo(const char *zUuid){ |
| 1020 | 1020 | static Stmt q; |
| 1021 | 1021 | int rc; |
| 1022 | + int n; | |
| 1023 | + char zU2[UUID_SIZE+1]; | |
| 1022 | 1024 | db_static_prepare(&q, |
| 1023 | - "SELECT 1 FROM blob WHERE uuid>=:u AND +uuid GLOB (:u || '*')" | |
| 1025 | + "SELECT 1 FROM blob WHERE uuid>=:u AND uuid<:u2" | |
| 1024 | 1026 | ); |
| 1025 | 1027 | db_bind_text(&q, ":u", zUuid); |
| 1028 | + n = (int)strlen(zUuid); | |
| 1029 | + if( n>=sizeof(zU2) ) n = sizeof(zU2)-1; | |
| 1030 | + memcpy(zU2, zUuid, n); | |
| 1031 | + zU2[n-1]++; | |
| 1032 | + zU2[n] = 0; | |
| 1033 | + db_bind_text(&q, ":u2", zU2); | |
| 1026 | 1034 | rc = db_step(&q); |
| 1027 | 1035 | db_reset(&q); |
| 1028 | 1036 | return rc==SQLITE_ROW; |
| 1029 | 1037 | } |
| 1030 | 1038 | |
| 1031 | 1039 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1017,14 +1017,22 @@ | |
| 1017 | ** repository. |
| 1018 | */ |
| 1019 | static int in_this_repo(const char *zUuid){ |
| 1020 | static Stmt q; |
| 1021 | int rc; |
| 1022 | db_static_prepare(&q, |
| 1023 | "SELECT 1 FROM blob WHERE uuid>=:u AND +uuid GLOB (:u || '*')" |
| 1024 | ); |
| 1025 | db_bind_text(&q, ":u", zUuid); |
| 1026 | rc = db_step(&q); |
| 1027 | db_reset(&q); |
| 1028 | return rc==SQLITE_ROW; |
| 1029 | } |
| 1030 | |
| 1031 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1017,14 +1017,22 @@ | |
| 1017 | ** repository. |
| 1018 | */ |
| 1019 | static int in_this_repo(const char *zUuid){ |
| 1020 | static Stmt q; |
| 1021 | int rc; |
| 1022 | int n; |
| 1023 | char zU2[UUID_SIZE+1]; |
| 1024 | db_static_prepare(&q, |
| 1025 | "SELECT 1 FROM blob WHERE uuid>=:u AND uuid<:u2" |
| 1026 | ); |
| 1027 | db_bind_text(&q, ":u", zUuid); |
| 1028 | n = (int)strlen(zUuid); |
| 1029 | if( n>=sizeof(zU2) ) n = sizeof(zU2)-1; |
| 1030 | memcpy(zU2, zUuid, n); |
| 1031 | zU2[n-1]++; |
| 1032 | zU2[n] = 0; |
| 1033 | db_bind_text(&q, ":u2", zU2); |
| 1034 | rc = db_step(&q); |
| 1035 | db_reset(&q); |
| 1036 | return rc==SQLITE_ROW; |
| 1037 | } |
| 1038 | |
| 1039 |