From b6d4fcc09b8d0553eee689fd7fd2cff825aa1139 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Tue, 21 Nov 1989 13:34:03 +0000 Subject: [PATCH] ING_DB --- WEGA/contrib/ingres/dbs/src/amx_cc/w_print.c | 57 +++++++ WEGA/contrib/ingres/dbs/src/amx_lib/AAdel.c | 102 +++++++++++ WEGA/contrib/ingres/dbs/src/amx_lib/AArep.c | 169 +++++++++++++++++++ 3 files changed, 328 insertions(+) create mode 100644 WEGA/contrib/ingres/dbs/src/amx_cc/w_print.c create mode 100644 WEGA/contrib/ingres/dbs/src/amx_lib/AAdel.c create mode 100644 WEGA/contrib/ingres/dbs/src/amx_lib/AArep.c diff --git a/WEGA/contrib/ingres/dbs/src/amx_cc/w_print.c b/WEGA/contrib/ingres/dbs/src/amx_cc/w_print.c new file mode 100644 index 0000000..546d444 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/amx_cc/w_print.c @@ -0,0 +1,57 @@ +# include "amx.h" + +w_print(dom) +register int dom; +{ + register AMX_REL *r; + register AMX_ATT *a; + register int all; + register int len; + register int mv; + extern char *conv(); + + if (!(r = Scan_rel)) + return (amxerror(211)); + if (!(all = dom == 0)) + --dom; + + do + { + a = &r->rel_dom[dom++]; + len = ctou(a->att_len); + + if (mv = (a->att_type != opSTRING && bitset(ODD, a->att_off))) + { + /* move dom in a temp place */ + fprintf(FILE_tmp, msg(47), a->att_off, len); + } + fprintf(FILE_tmp, "printf(\"%12s:\\t%%", a->att_name); + switch (a->att_type) + { + case opSTRING: + fprintf(FILE_tmp, ".%ds", len); + break; + + case opLONG: + putc('l', FILE_tmp); + /* fall through */ + + case opCHAR: + case opINT: + putc('d', FILE_tmp); + break; + +# ifndef NO_F4 + case opFLT: +# endif + case opDOUBLE: + fprintf(FILE_tmp, "10.3f"); + } + fprintf(FILE_tmp, "\\n\",%s", conv(a->att_type, 1)); + if (mv) + fprintf(FILE_tmp, "&AA_var"); + else + fprintf(FILE_tmp, "&AA_STUP[%d]", a->att_off); + fprintf(FILE_tmp, "));\n"); + } while (all && dom < ctou(r->rel_atts)); +} diff --git a/WEGA/contrib/ingres/dbs/src/amx_lib/AAdel.c b/WEGA/contrib/ingres/dbs/src/amx_lib/AAdel.c new file mode 100644 index 0000000..31b9a0e --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/amx_lib/AAdel.c @@ -0,0 +1,102 @@ +# include "AA_liba.h" + +AAdelete(p, rel, tid) +register DESCXX *p; +register char *rel; +register long *tid; +{ +# ifdef AMX_TRACE + AAtTfp(5, 0, +# ifdef MSDOS + "delete rel\t`%.10s'\n", +# else + "delete rel\t`%.14s'\n", +# endif + rel); +# endif + + errno = 0; + + if (!AA_DESC) + AAerror(111, "delete"); + + if (!p) + AAerror(106, rel); + + if (!AA_NOLOCKS && !(p->xx_excl & M_EXCL)) + AAerror(21, rel); + + AA_on(); + + AA_TID = *tid; + AA = AAam_delete(p, tid); + +# ifdef AM_TRACE + AAtTfp(5, 14, "##AM_DELETE\t%d\n", AA); + if (AAtTfp(5, 15, "##\t\told")) + AAdumptid(tid); +# endif + + if (AA < 0) + AAerror(3, rel); + + if (ctoi(p->xx_desc.reldum.relindxd) == SECBASE) + { + AAp_desc = p; + AAold_tuple = AA_STUP; + while (p = p->xx_index) + AAsecdelete(p); + } + + AA_off(); +} + + +AAsecdelete(i) +register DESCXX *i; +{ + char itup[MAXTUP]; + char ikey[MAXTUP]; + long tid; + +# ifdef AMX_TRACE + AAtTfp(6, 0, +# ifdef MSDOS + "delete index\t`%.10s'\n", +# else + "delete index\t`%.14s'\n", +# endif + i->xx_desc.reldum.relid); +# endif + + errno = 0; + AAsectup(ikey, i->xx_indom, &AA_TID); + /* set all keys on index descriptor */ + AAbmove(AA_SET_ALL_KEYS, &i->xx_desc.relgiven[1], MAXKEYS + 1); + + AA = AAgetequal(i, ikey, itup, &tid); + +# ifdef AM_TRACE + AAtTfp(6, 6, "##AM_GETEQUAL\t%d\n", AA); + if (AAtTfp(6, 7, "##\t\told")) + AAdumptid(&tid); + if (AAtTfp(6, 8, "##\t\toldkey")) + AAprkey(i, ikey); + if (AAtTfp(6, 9, "##\t\tnewtup")) + AAprtup(i, itup); +# endif + + if (AA) + AAerror(4, i->xx_desc.reldum.relid); + + AA = AAam_delete(i, &tid); + +# ifdef AM_TRACE + AAtTfp(6, 14, "##AM_DELETE\t%d\n", AA); + if (AAtTfp(6, 15, "##\t\told")) + AAdumptid(&tid); +# endif + + if (AA < 0) + AAerror(3, i->xx_desc.reldum.relid); +} diff --git a/WEGA/contrib/ingres/dbs/src/amx_lib/AArep.c b/WEGA/contrib/ingres/dbs/src/amx_lib/AArep.c new file mode 100644 index 0000000..48dc055 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/amx_lib/AArep.c @@ -0,0 +1,169 @@ +# include "AA_liba.h" + +# define DUP_CHECK 1 +# define INVALID_TID 2 + +static int AArep_code; /* return code of AAam_replace() */ +static long AArep_tid; /* TID of AAam_replace() */ +static char *AAnew_tuple; /* global primary tuple pointer */ + +AAreplace(p, rel, tid, ptup, repl) +register DESCXX *p; +char *rel; +register long *tid; +register char *ptup; +register char *repl; +{ +# ifdef AMX_TRACE + AAtTfp(7, 0, +# ifdef MSDOS + "replace rel\t`%.10s'\n", +# else + "replace rel\t`%.14s'\n", +# endif + rel); +# endif + + errno = 0; + + if (!AA_DESC) + AAerror(111, "replace"); + + if (!p) + AAerror(106, rel); + + if (!AA_NOLOCKS && !(p->xx_excl & M_EXCL)) + AAerror(22, rel); + + AA_on(); + + AA_TID = *tid; + AArep_tid = *tid; + AA = AArep_code = AAam_replace(p, &AArep_tid, ptup, DUP_CHECK); + +# ifdef AM_TRACE + AAtTfp(7, 10, "##AM_REPLACE\t%d\n", AA); + if (AAtTfp(7, 11, "##\t\told")) + AAdumptid(tid); + if (AAtTfp(7, 12, "##\t\tnew")) + AAdumptid(&AArep_tid); + if (AAtTfp(7, 13, "##\t\tnewtup")) + AAprtup(p, ptup); +# endif + + if (AA < 0 || AA == INVALID_TID) + AAerror(5, rel); + + if (ctoi(p->xx_desc.reldum.relindxd) == SECBASE) + { + AAp_desc = p; + AAold_tuple = AA_STUP; + AAnew_tuple = ptup; + while (p = p->xx_index) + AAsecreplace(p, *repl++); + } + + AA_off(); +} + + +AAsecreplace(i, repl) +register DESCXX *i; +register int repl; +{ + register char *old_tup; + long tid; + long old_tid; + char itup[MAXTUP]; + char ikey[MAXTUP]; + +# ifdef AMX_TRACE + AAtTfp(8, 0, +# ifdef MSDOS + "replace index\t`%.10s' (%d)\n", +# else + "replace index\t`%.14s' (%d)\n", +# endif + i->xx_desc.reldum.relid, repl); +# endif + + errno = 0; + if (AArep_tid == AA_TID) /* identical tid's */ + { + if (AArep_code) + { +# ifdef AMX_TRACE + AAtTfp(8, 1, "\t\tidentical\n"); +# endif + return; /* identical tuple */ + } + else if (repl == '0') + { +# ifdef AMX_TRACE + AAtTfp(8, 2, "\t\tdoms unchanged\n"); +# endif + return; /* index domains unchanged */ + } + } + + AAsectup(ikey, i->xx_indom, &AA_TID); + /* set all keys on index descriptor */ + AAbmove(AA_SET_ALL_KEYS, &i->xx_desc.relgiven[1], MAXKEYS + 1); + + AA = AAgetequal(i, ikey, itup, &tid); + +# ifdef AM_TRACE + AAtTfp(8, 6, "##AM_GETEQUAL\t%d\n", AA); + if (AAtTfp(8, 7, "##\t\told")) + AAdumptid(&tid); + if (AAtTfp(8, 8, "##\t\toldkey")) + AAprkey(i, ikey); + if (AAtTfp(8, 9, "##\t\tnewtup")) + AAprtup(i, itup); +# endif + + if (AA) + AAerror(6, i->xx_desc.reldum.relid); + + if (AArep_code) + { +# ifdef AMX_TRACE + AAtTfp(8, 3, "\t\tdelete\n"); +# endif + AA = AAam_delete(i, &tid); + +# ifdef AM_TRACE + AAtTfp(8, 14, "##AM_DELETE\t%d\n", AA); + if (AAtTfp(8, 15, "##\t\told")) + AAdumptid(&tid); +# endif + + if (AA) + AAerror(7, i->xx_desc.reldum.relid); + + return; + } + +# ifdef AMX_TRACE + AAtTfp(8, 4, "\t\treplace\n"); +# endif + old_tid = tid; + old_tup = AAold_tuple; + AAold_tuple = AAnew_tuple; + AAsectup(itup, i->xx_indom, &AArep_tid); + AAold_tuple = old_tup; + AA = AAam_replace(i, &tid, itup, DUP_CHECK); + +# ifdef AM_TRACE + AAtTfp(8, 10, "##AM_REPLACE\t%d\n", AA); + if (AAtTfp(8, 11, "##\t\told")) + AAdumptid(&old_tid); + if (AAtTfp(8, 12, "##\t\tnew")) + AAdumptid(&tid); + if (AAtTfp(8, 13, "##\t\tnewtup")) + AAprtup(i, itup); +# endif + + if (AA < 0 || AA == INVALID_TID) + AAerror(5, i->xx_desc.reldum.relid); +}