will fit in an unsigned int.
Don't call cleanup() if we're running as MODE_NO.
char dir[NFSPHYS_DIR_SIZE];
int mach_id;
int nfsphys_id;
- int allocated;
+ unsigned long long allocated;
int modby;
- int count;
+ unsigned long long count;
};
struct printserver {
phase4();
EXEC SQL COMMIT WORK;
- cleanup();
+ if (mode != MODE_NO)
+ cleanup();
printf("Done.\n");
exit(0);
}
out_of_mem("loading nfsphs");
EXEC SQL DECLARE csr111 CURSOR FOR
- SELECT nfsphys_id, dir, mach_id, allocated, modby FROM nfsphys;
+ SELECT nfsphys_id, dir, mach_id, TO_CHAR(allocated), modby FROM nfsphys;
EXEC SQL OPEN csr111;
while (1)
{
EXEC SQL BEGIN DECLARE SECTION;
- int nfsphys_id, mach_id, allocated, modby;
+ int nfsphys_id, mach_id, modby;
char dir[NFSPHYS_DIR_SIZE];
+ char allocated[39];
EXEC SQL END DECLARE SECTION;
EXEC SQL FETCH csr111 INTO :nfsphys_id, :dir, :mach_id,
strcpy(n->dir, strtrim(dir));
n->mach_id = mach_id;
n->nfsphys_id = nfsphys_id;
- n->allocated = allocated;
+ n->allocated = strtoull(allocated, NULL, 0);
n->modby = modby;
n->count = 0;
retval = hash_store(nfsphys, nfsphys_id, n);
{
struct nfsphys *n = nfsphys;
EXEC SQL BEGIN DECLARE SECTION;
- int iid = id, val, rowcount;
+ int iid = id, rowcount;
+ unsigned long long val;
+ char valstr[40] = {0}, *endptr = valstr+39;
EXEC SQL END DECLARE SECTION;
val = n->count;
if (n->allocated != val)
{
- printf("Count wrong on NFSphys %s:%s; is %d in db, counted %d\n",
+ printf("Count wrong on NFSphys %s:%s; is %lld in db, counted %lld\n",
((struct machine *) hash_lookup(machines, n->mach_id))->name,
n->dir, n->allocated, val);
if (single_fix("Update", 1))
{
- EXEC SQL UPDATE nfsphys SET allocated = :val
+ strcpy(valstr, ulltostr(val, endptr));
+ EXEC SQL UPDATE nfsphys SET allocated = TO_NUMBER(:valstr)
WHERE nfsphys_id = :iid;
rowcount = sqlca.sqlerrd[2];
if (rowcount > 0)