76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
** in sorted order in aField[].
**
** The haveTicket and haveTicketChng variables are set to 1 if the TICKET and
** TICKETCHANGE tables exist, respectively.
*/
static void getAllTicketFields(void){
Stmt q;
int i, noRegularMimetype, noBaselines;
static int once = 0;
if( once ) return;
once = noBaselines = 1;
db_prepare(&q, "PRAGMA table_info(ticket)");
while( db_step(&q)==SQLITE_ROW ){
const char *zFieldName = db_column_text(&q, 1);
haveTicket = 1;
if( memcmp(zFieldName,"tkt_",4)==0 ){
if( strcmp(zFieldName, "tkt_ctime")==0 ) haveTicketCTime = 1;
continue;
}
if( noBaselines && memcmp(zFieldName,"baseline for ",13)==0 ){
noBaselines = 0;
continue;
}
if( strchr(zFieldName,' ')!=0 ) continue;
if( nField%10==0 ){
aField = fossil_realloc(aField, sizeof(aField[0])*(nField+10) );
}
aField[nField].zBsln = 0;
aField[nField].zName = mprintf("%s", zFieldName);
aField[nField].mUsed = USEDBY_TICKET;
nField++;
}
db_finalize(&q);
if( !noBaselines ){
db_prepare(&q, "SELECT 1 FROM pragma_table_info('ticket') "
"WHERE type = 'INTEGER' AND name = :n");
for(i=0; i<nField; i++){
char *zBsln = mprintf("baseline for %s",aField[i].zName);
db_bind_text(&q, ":n", zBsln);
if( db_step(&q)==SQLITE_ROW ){
aField[i].zBsln = zBsln;
nTicketBslns++;
}else{
free(zBsln);
}
db_reset(&q);
}
db_finalize(&q);
}
|
|
|
>
|
>
|
>
|
|
>
|
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
** in sorted order in aField[].
**
** The haveTicket and haveTicketChng variables are set to 1 if the TICKET and
** TICKETCHANGE tables exist, respectively.
*/
static void getAllTicketFields(void){
Stmt q;
int i, noRegularMimetype, nBaselines;
static int once = 0;
if( once ) return;
once = 1;
nBaselines = 0;
db_prepare(&q, "PRAGMA table_info(ticket)");
while( db_step(&q)==SQLITE_ROW ){
const char *zFieldName = db_column_text(&q, 1);
haveTicket = 1;
if( memcmp(zFieldName,"tkt_",4)==0 ){
if( strcmp(zFieldName, "tkt_ctime")==0 ) haveTicketCTime = 1;
continue;
}
if( memcmp(zFieldName,"baseline for ",13)==0 ){
if( strcmp(db_column_text(&q,2),"INTEGER")==0 ){
nBaselines++;
}
continue;
}
if( strchr(zFieldName,' ')!=0 ) continue;
if( nField%10==0 ){
aField = fossil_realloc(aField, sizeof(aField[0])*(nField+10) );
}
aField[nField].zBsln = 0;
aField[nField].zName = mprintf("%s", zFieldName);
aField[nField].mUsed = USEDBY_TICKET;
nField++;
}
db_finalize(&q);
if( nBaselines ){
db_prepare(&q, "SELECT 1 FROM pragma_table_info('ticket') "
"WHERE type = 'INTEGER' AND name = :n");
for(i=0; i<nField && nBaselines!=0; i++){
char *zBsln = mprintf("baseline for %s",aField[i].zName);
db_bind_text(&q, ":n", zBsln);
if( db_step(&q)==SQLITE_ROW ){
aField[i].zBsln = zBsln;
nTicketBslns++;
nBaselines--;
}else{
free(zBsln);
}
db_reset(&q);
}
db_finalize(&q);
}
|