ING_DB
This commit is contained in:
parent
8e900dedd8
commit
263bea5a80
|
|
@ -0,0 +1,78 @@
|
||||||
|
# include "AA_liba.h"
|
||||||
|
|
||||||
|
static char *AAERR[] =
|
||||||
|
{
|
||||||
|
"OPEN", /* 0 */
|
||||||
|
"CLOSE", /* 1 */
|
||||||
|
"APPEND", /* 2 */
|
||||||
|
"DELETE", /* 3 */
|
||||||
|
"DELETE.AAgetequal", /* 4 */
|
||||||
|
"REPLACE", /* 5 */
|
||||||
|
"REPLACE.AAgetequal", /* 6 */
|
||||||
|
"REPLACE.delete", /* 7 */
|
||||||
|
"FIND.isam", /* 8 */
|
||||||
|
"FIND.lisam", /* 9 */
|
||||||
|
"FIND.hisam", /* 10 */
|
||||||
|
"GET.getup", /* 11 */
|
||||||
|
"GET.getid", /* 12 */
|
||||||
|
"SETKEY.dom", /* 13 */
|
||||||
|
"SETKEY.cond", /* 14 */
|
||||||
|
"request", /* 15 */
|
||||||
|
"release", /* 16 */
|
||||||
|
"lock", /* 17 */
|
||||||
|
"unlock", /* 18 */
|
||||||
|
"get: not locked", /* 19 */
|
||||||
|
"append: not locked", /* 20 */
|
||||||
|
"delete: not locked", /* 21 */
|
||||||
|
"replace: not locked", /* 22 */
|
||||||
|
"release: not locked", /* 23 */
|
||||||
|
"refresh", /* 24 */
|
||||||
|
"GET.get", /* 25 */
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *AAERR100[] =
|
||||||
|
{
|
||||||
|
"not available", /* 100 */
|
||||||
|
"already open", /* 101 */
|
||||||
|
"not enough memory", /* 102 */
|
||||||
|
"has integrities", /* 103 */
|
||||||
|
"has protections", /* 104 */
|
||||||
|
"view", /* 105 */
|
||||||
|
"not open", /* 106 */
|
||||||
|
"concurrency confusion", /* 107 */
|
||||||
|
"relation outside in use", /* 108 */
|
||||||
|
"TA", /* 109 */
|
||||||
|
"permission denied", /* 110 */
|
||||||
|
"database lost", /* 111 */
|
||||||
|
};
|
||||||
|
|
||||||
|
AAerror(err, msg)
|
||||||
|
register int err;
|
||||||
|
register char *msg;
|
||||||
|
{
|
||||||
|
extern int errno;
|
||||||
|
extern int AAccerror;
|
||||||
|
|
||||||
|
printf("\n\007AMXERR:\t* * * * * * *\t%d\n", err);
|
||||||
|
printf("\tBS\tpid\t%d\n", getpid());
|
||||||
|
if (errno)
|
||||||
|
printf("\tBS\terror\t%d\n", errno);
|
||||||
|
if (AAccerror)
|
||||||
|
printf("\tACCESS\terror\t%d\n", AAccerror);
|
||||||
|
|
||||||
|
if (err < 100)
|
||||||
|
{
|
||||||
|
printf("\tAMX-RC\t\t%d\n", AA);
|
||||||
|
# ifdef MSDOS
|
||||||
|
printf("bad %s: relation `%.10s'\n",
|
||||||
|
# else
|
||||||
|
printf("bad %s: relation `%.14s'\n",
|
||||||
|
# endif
|
||||||
|
AAERR[err], msg);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("`%s': %s\n", msg, AAERR100[err -100]);
|
||||||
|
|
||||||
|
fflush(stdout);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
# include "AA_liba.h"
|
||||||
|
|
||||||
|
|
||||||
|
AArequest(d, rel)
|
||||||
|
register DESCXX *d;
|
||||||
|
register char *rel;
|
||||||
|
{
|
||||||
|
# ifdef AMX_TRACE
|
||||||
|
AAtTfp(11, 0,
|
||||||
|
# ifdef MSDOS
|
||||||
|
"retrieve\t`%.10s'\n",
|
||||||
|
# else
|
||||||
|
"retrieve\t`%.14s'\n",
|
||||||
|
# endif
|
||||||
|
rel);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
errno = 0;
|
||||||
|
if (!d)
|
||||||
|
AAerror(106, rel);
|
||||||
|
|
||||||
|
if (AA_NOLOCKS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
do AAmark(d); while (d = d->xx_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static AAmark(d)
|
||||||
|
register DESCXX *d;
|
||||||
|
{
|
||||||
|
# ifdef AMX_TRACE
|
||||||
|
AAtTfp(29, 0,
|
||||||
|
# ifdef MSDOS
|
||||||
|
"lock\t\t`%.10s' (%d) mod 0%o\n",
|
||||||
|
# else
|
||||||
|
"lock\t\t`%.14s' (%d) mod 0%o\n",
|
||||||
|
# endif
|
||||||
|
d->xx_desc.reldum.relid, d->xx_locks, M_SHARE);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (d->xx_locks++)
|
||||||
|
return;
|
||||||
|
|
||||||
|
AA = 0;
|
||||||
|
if (AA_TA || AAsetrll(A_SLP, d->xx_desc.reltid, AA = M_SHARE) < 0)
|
||||||
|
AAerror(15, d->xx_desc.reldum.relid);
|
||||||
|
AA_LOCKS++;
|
||||||
|
d->xx_refresh = 0;
|
||||||
|
d->xx_excl = M_SHARE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AArelease(d)
|
||||||
|
register DESCXX *d;
|
||||||
|
{
|
||||||
|
# ifdef AMX_TRACE
|
||||||
|
AAtTfp(12, 0,
|
||||||
|
# ifdef MSDOS
|
||||||
|
"end retrieve\t`%.10s'\n",
|
||||||
|
# else
|
||||||
|
"end retrieve\t`%.14s'\n",
|
||||||
|
# endif
|
||||||
|
d->xx_desc.reldum.relid);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (AA_NOLOCKS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
do AAfree(d); while (d = d->xx_index);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static AAfree(d)
|
||||||
|
register DESCXX *d;
|
||||||
|
{
|
||||||
|
# ifdef AMX_TRACE
|
||||||
|
AAtTfp(30, 0,
|
||||||
|
# ifdef MSDOS
|
||||||
|
"unlock\t\t`%.10s' (%d)\n",
|
||||||
|
# else
|
||||||
|
"unlock\t\t`%.14s' (%d)\n",
|
||||||
|
# endif
|
||||||
|
d->xx_desc.reldum.relid, d->xx_locks);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
if (d->xx_locks <= 0)
|
||||||
|
AAerror(23, d->xx_desc.reldum.relid);
|
||||||
|
|
||||||
|
if (--d->xx_locks)
|
||||||
|
return;
|
||||||
|
|
||||||
|
AAnoclose(d);
|
||||||
|
AA = 0;
|
||||||
|
if (AA_TA || (AA = AAunlrl(d->xx_desc.reltid)) < 0)
|
||||||
|
AAerror(16, d->xx_desc.reldum.relid);
|
||||||
|
|
||||||
|
d->xx_refresh = 0;
|
||||||
|
d->xx_excl = 0;
|
||||||
|
--AA_LOCKS;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue