Fossil SCM

stash patch from [forum:b96b0755a0|forum post b96b0755a0] which updates it to handle the NULL stashfile.hash case introduced in [ed06585f41]. This resolves the 11 failing stash tests.

stephan 2021-10-21 08:42 trunk
Commit 4531bcd49774708cfd9746f33d09f6fa715389036bc7b5bbdf3db7366e08552f
1 file changed +8 -4
+8 -4
--- src/stash.c
+++ src/stash.c
@@ -308,12 +308,14 @@
308308
static void stash_apply(int stashid, int nConflict){
309309
int vid;
310310
Stmt q;
311311
db_prepare(&q,
312312
"SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
313
- " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash",
314
- stashid
313
+ " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash"
314
+ " UNION ALL SELECT 0, isRemoved, isExec, isLink, origname, newname, delta"
315
+ " FROM stashfile WHERE stashid=%d AND stashfile.hash IS NULL",
316
+ stashid, stashid
315317
);
316318
vid = db_lget_int("checkout",0);
317319
db_multi_exec("CREATE TEMP TABLE sfile(pathname TEXT PRIMARY KEY %s)",
318320
filename_collation());
319321
while( db_step(&q)==SQLITE_ROW ){
@@ -412,12 +414,14 @@
412414
int bWebpage = (pCfg->diffFlags & (DIFF_WEBPAGE|DIFF_JSON|DIFF_TCL))!=0;
413415
blob_zero(&empty);
414416
diff_begin(pCfg);
415417
db_prepare(&q,
416418
"SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
417
- " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash",
418
- stashid
419
+ " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash"
420
+ " UNION ALL SELECT 0, isRemoved, isExec, isLink, origname, newname, delta"
421
+ " FROM stashfile WHERE stashid=%d AND stashfile.hash IS NULL",
422
+ stashid, stashid
419423
);
420424
while( db_step(&q)==SQLITE_ROW ){
421425
int rid = db_column_int(&q, 0);
422426
int isRemoved = db_column_int(&q, 1);
423427
int isLink = db_column_int(&q, 3);
424428
--- src/stash.c
+++ src/stash.c
@@ -308,12 +308,14 @@
308 static void stash_apply(int stashid, int nConflict){
309 int vid;
310 Stmt q;
311 db_prepare(&q,
312 "SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
313 " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash",
314 stashid
 
 
315 );
316 vid = db_lget_int("checkout",0);
317 db_multi_exec("CREATE TEMP TABLE sfile(pathname TEXT PRIMARY KEY %s)",
318 filename_collation());
319 while( db_step(&q)==SQLITE_ROW ){
@@ -412,12 +414,14 @@
412 int bWebpage = (pCfg->diffFlags & (DIFF_WEBPAGE|DIFF_JSON|DIFF_TCL))!=0;
413 blob_zero(&empty);
414 diff_begin(pCfg);
415 db_prepare(&q,
416 "SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
417 " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash",
418 stashid
 
 
419 );
420 while( db_step(&q)==SQLITE_ROW ){
421 int rid = db_column_int(&q, 0);
422 int isRemoved = db_column_int(&q, 1);
423 int isLink = db_column_int(&q, 3);
424
--- src/stash.c
+++ src/stash.c
@@ -308,12 +308,14 @@
308 static void stash_apply(int stashid, int nConflict){
309 int vid;
310 Stmt q;
311 db_prepare(&q,
312 "SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
313 " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash"
314 " UNION ALL SELECT 0, isRemoved, isExec, isLink, origname, newname, delta"
315 " FROM stashfile WHERE stashid=%d AND stashfile.hash IS NULL",
316 stashid, stashid
317 );
318 vid = db_lget_int("checkout",0);
319 db_multi_exec("CREATE TEMP TABLE sfile(pathname TEXT PRIMARY KEY %s)",
320 filename_collation());
321 while( db_step(&q)==SQLITE_ROW ){
@@ -412,12 +414,14 @@
414 int bWebpage = (pCfg->diffFlags & (DIFF_WEBPAGE|DIFF_JSON|DIFF_TCL))!=0;
415 blob_zero(&empty);
416 diff_begin(pCfg);
417 db_prepare(&q,
418 "SELECT blob.rid, isRemoved, isExec, isLink, origname, newname, delta"
419 " FROM stashfile, blob WHERE stashid=%d AND blob.uuid=stashfile.hash"
420 " UNION ALL SELECT 0, isRemoved, isExec, isLink, origname, newname, delta"
421 " FROM stashfile WHERE stashid=%d AND stashfile.hash IS NULL",
422 stashid, stashid
423 );
424 while( db_step(&q)==SQLITE_ROW ){
425 int rid = db_column_int(&q, 0);
426 int isRemoved = db_column_int(&q, 1);
427 int isLink = db_column_int(&q, 3);
428

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button