@@ -35,13 +35,14 @@
35 35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
unsigned mUsed; /* 01: TICKET 02: TICKETCHNG */
36 36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
} *aField;
37 37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define USEDBY_TICKET 01
38 38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define USEDBY_TICKETCHNG 02
39 39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define USEDBY_BOTH 03
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int haveTicket = 0; /* True if the TICKET table exists */
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int haveTicketChng = 0; /* True if the TICKETCHNG table exists */
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- static int haveTicketChngRid = 0; /* True if TICKETCHNG.TKT_RID exists */
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 haveTicket = 0; /* True if the TICKET table exists */
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 haveTicketCTime = 0; /* True if TICKET.TKT_CTIME exists */
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 haveTicketChng = 0; /* True if the TICKETCHNG table exists */
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ static u8 haveTicketChngRid = 0; /* True if TICKETCHNG.TKT_RID exists */
43 44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
44 45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
45 46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Compare two entries in aField[] for sorting purposes
46 47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
47 48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
static int nameCmpr(const void *a, const void *b){
@@ -76,11 +77,14 @@
76 77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
once = 1;
77 78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "PRAGMA table_info(ticket)");
78 79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
79 80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFieldName = db_column_text(&q, 1);
80 81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
haveTicket = 1;
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( memcmp(zFieldName,"tkt_",4)==0 ) continue;
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( memcmp(zFieldName,"tkt_",4)==0 ){
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(zFieldName, "tkt_ctime")==0 ) haveTicketCTime = 1;
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
82 86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nField%10==0 ){
83 87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aField = fossil_realloc(aField, sizeof(aField[0])*(nField+10) );
84 88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
85 89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aField[nField].zName = mprintf("%s", zFieldName);
86 90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aField[nField].mUsed = USEDBY_TICKET;
@@ -89,12 +93,14 @@
89 93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
90 94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "PRAGMA table_info(ticketchng)");
91 95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
92 96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zFieldName = db_column_text(&q, 1);
93 97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
haveTicketChng = 1;
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( strcmp(zFieldName,"tkt_rid")==0 ) haveTicketChngRid = 1;
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( memcmp(zFieldName,"tkt_",4)==0 ) continue;
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( memcmp(zFieldName,"tkt_",4)==0 ){
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( strcmp(zFieldName,"tkt_rid")==0 ) haveTicketChngRid = 1;
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ continue;
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
96 102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (i = fieldId(zFieldName))>=0 ){
97 103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aField[i].mUsed |= USEDBY_TICKETCHNG;
98 104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
99 105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
100 106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( nField%10==0 ){
@@ -197,10 +203,13 @@
197 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
198 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql1);
199 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql2);
200 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_zero(&sql3);
201 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&sql1, "UPDATE OR REPLACE ticket SET tkt_mtime=:mtime");
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( haveTicketCTime ){
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_appendf(&sql1, ", tkt_ctime=coalesce(tkt_ctime,:mtime)");
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
202 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
aUsed = fossil_malloc( nField );
203 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
memset(aUsed, 0, nField);
204 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
for(i=0; i<p->nField; i++){
205 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName = p->aField[i].zName;
206 215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( (j = fieldId(zName))<0 ) continue;
@@ -226,11 +235,11 @@
226 235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "%s", blob_str(&sql1));
227 236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_bind_double(&q, ":mtime", p->rDate);
228 237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_step(&q);
229 238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
230 239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_reset(&sql1);
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( blob_size(&sql2)>0 ){
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( blob_size(&sql2)>0 || haveTicketChngRid ){
232 241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fromTkt = 0;
233 242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( haveTicketChngRid ){
234 243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_append(&sql2, ",tkt_rid", -1);
235 244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blob_appendf(&sql3, ",%d", rid);
236 245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
237 246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!