158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
}
while( path.pCurrent ){
path.nStep++;
pPrev = path.pCurrent;
path.pCurrent = 0;
while( pPrev ){
db_bind_int(&s, ":pid", pPrev->rid);
while( db_step(&s)==SQLITE_ROW ){
int cid = db_column_int(&s, 0);
int isParent = db_column_int(&s, 1);
if( bag_find(&path.seen, cid) ) continue;
p = path_new_node(cid, pPrev, isParent);
if( cid==iTo ){
db_finalize(&s);
path.pEnd = p;
|
|
|
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
}
while( path.pCurrent ){
path.nStep++;
pPrev = path.pCurrent;
path.pCurrent = 0;
while( pPrev ){
db_bind_int(&s, ":pid", pPrev->rid);
while( db_step(&s)==SQLITE4_ROW ){
int cid = db_column_int(&s, 0);
int isParent = db_column_int(&s, 1);
if( bag_find(&path.seen, cid) ) continue;
p = path_new_node(cid, pPrev, isParent);
if( cid==iTo ){
db_finalize(&s);
path.pEnd = p;
|
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
|
bag_init(&you);
bag_insert(&you, iYou);
while( path.pCurrent ){
pPrev = path.pCurrent;
path.pCurrent = 0;
while( pPrev ){
db_bind_int(&s, ":cid", pPrev->rid);
while( db_step(&s)==SQLITE_ROW ){
int pid = db_column_int(&s, 0);
if( bag_find(pPrev->isPrim ? &you : &me, pid) ){
/* pid is the common ancestor */
PathNode *pNext;
for(p=path.pAll; p && p->rid!=pid; p=p->pAll){}
assert( p!=0 );
pNext = p;
|
|
|
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
|
bag_init(&you);
bag_insert(&you, iYou);
while( path.pCurrent ){
pPrev = path.pCurrent;
path.pCurrent = 0;
while( pPrev ){
db_bind_int(&s, ":cid", pPrev->rid);
while( db_step(&s)==SQLITE4_ROW ){
int pid = db_column_int(&s, 0);
if( bag_find(pPrev->isPrim ? &you : &me, pid) ){
/* pid is the common ancestor */
PathNode *pNext;
for(p=path.pAll; p && p->rid!=pid; p=p->pAll){}
assert( p!=0 );
pNext = p;
|
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
for(p=path.pStart; p; p=p->u.pTo){
int fnid, pfnid;
if( !p->fromIsParent && (p->u.pTo==0 || p->u.pTo->fromIsParent) ){
/* Skip nodes where the parent is not on the path */
continue;
}
db_bind_int(&q1, ":mid", p->rid);
while( db_step(&q1)==SQLITE_ROW ){
fnid = db_column_int(&q1, 1);
pfnid = db_column_int(&q1, 0);
if( pfnid==0 ){
pfnid = fnid;
fnid = 0;
}
if( !p->fromIsParent ){
|
|
|
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
|
for(p=path.pStart; p; p=p->u.pTo){
int fnid, pfnid;
if( !p->fromIsParent && (p->u.pTo==0 || p->u.pTo->fromIsParent) ){
/* Skip nodes where the parent is not on the path */
continue;
}
db_bind_int(&q1, ":mid", p->rid);
while( db_step(&q1)==SQLITE4_ROW ){
fnid = db_column_int(&q1, 1);
pfnid = db_column_int(&q1, 0);
if( pfnid==0 ){
pfnid = fnid;
fnid = 0;
}
if( !p->fromIsParent ){
|