From d126b68e03f1f69d7739c19aef190b3239288b0d Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Thu, 6 Apr 1989 13:58:27 +0000 Subject: [PATCH] ING_DB --- WEGA/contrib/ingres/dbs/src/sys/prbatch.c | 213 +++++++++++++++++++ WEGA/contrib/ingres/dbs/src/sys/printadmin.c | 101 +++++++++ 2 files changed, 314 insertions(+) create mode 100644 WEGA/contrib/ingres/dbs/src/sys/prbatch.c create mode 100644 WEGA/contrib/ingres/dbs/src/sys/printadmin.c diff --git a/WEGA/contrib/ingres/dbs/src/sys/prbatch.c b/WEGA/contrib/ingres/dbs/src/sys/prbatch.c new file mode 100644 index 0000000..c1701c5 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/sys/prbatch.c @@ -0,0 +1,213 @@ +# include +# include "../conf/gen.h" +# include "../h/dbs.h" +# include "../h/aux.h" +# include "../h/access.h" +# include "../h/batch.h" +# include "../h/symbol.h" +# include "../h/lock.h" +# include "../h/bs.h" + +# ifdef P8000 +ret_buf AAjmp_buf; +# else +jmp_buf AAjmp_buf; +# endif + +extern int AAdbstat; +char *Fileset; + +main(argc, argv) +int argc; +char *argv[]; +{ + register char **av; + register char *p; + register int i; + extern char *AAdbpath; + extern char *AAproc_name; + extern char *Parmvect[]; + extern char *Flagvect[]; +# ifdef SETBUF + char stdbuf[BUFSIZ]; + + setbuf(stdout, stdbuf); +# endif + + AAproc_name = "PRINT_BATCH_FILE"; + +# ifdef xSTR1 + AAtTrace(&argc, argv, 'X'); +# endif + + switch (i = initucode(argc, argv, TRUE, (char *) 0, M_SHARE)) + { + case 0: + case 5: + break; + + case 1: + case 6: + AAsyserr(0, "Die Datenbank '%s' existiert nicht", Parmvect[0]); + + case 2: + AAsyserr(0, "Sie duerfen auf die Datenbank '%s' nicht zugreifen", Parmvect[0]); + + case 3: + AAsyserr(0, "Sie sind kein eingetragener DBS-Nutzer"); + + case 4: + AAsyserr(0, "Sie haben keinen Datenbanknamen angegeben"); + + default: + AAsyserr(22200, AAproc_name, i); + } + + if (Flagvect[0]) + { + printf("Fuer dieses Kommando sind keine Flags gestattet\n"); + goto usage; + } + + /* + ** Check for usage errors. + */ + for (i = 1; Parmvect[i]; i++) + continue; + if (i < 2) + { +usage: + AAsyserr(0, "HINWEIS: prbatch db_name {batch_file}"); + } + + /* + ** Check for superuser + */ + if (!(AAdbstat & U_SUPER)) + AAsyserr(0, "Sie duerfen PRBATCH nicht verwenden"); + + p = Parmvect[0]; /* data base is first parameter */ + if (chdir(AAdbpath) < 0) + AAsyserr(22201, AAproc_name, p); + + av = &Parmvect[1]; + while (p = *av++) + prbatch(p); + AAunldb(); + fflush(stdout); + exit(0); +} + + +prbatch(name) +char *name; +{ + register struct si_doms *si; + register int i; + register struct batchhd *b; + long tupcnt; + long oldtid; + char oldtup[MAXTUP]; + long newtid; + char newtup[MAXTUP]; + char file_set_buf[IDSIZE + 1]; + extern long lseek(); + + if ((Batch_fp = open(name, 0)) < 0) + { + printf("BATCH file %s nicht lesbar\n", name); + return; + } + + read(Batch_fp, Fileset = file_set_buf, IDSIZE); + lseek(Batch_fp, 0L, 0); + file_set_buf[IDSIZE] = 0; + + b = &Batchhd; + Batch_cnt = BATCHSIZE; + getbatch(b, sizeof Batchhd); + + printf("BATCH\tfile\t%s\n", name); + printf("\t db\t%s\n", b->db_name); + printf("\t rel\t%s\n", b->rel_name); + printf("\tuser\t%s\n", b->userid); + switch (b->mode_up) + { + case mdAPP: + printf("APPEND\n"); + break; + + case mdDEL: + printf("DELETE\n"); + break; + + case mdREPL: + printf("REPLACE\n"); + break; + + default: + printf("%d\n", b->mode_up); + } + printf("\t%4ld\tAnzahl der Aenderungen\n", b->num_updts); + printf("\t%4d\tLaenge des alten TID's\n", b->tido_size); + printf("\t%4d\tLaenge des alten TUPLE's\n", b->tupo_size); + printf("\t%4d\tLaenge des neuen TID's\n", b->tidn_size); + printf("\t%4d\tLaenge des neuen TUPLE's\n", b->tupn_size); + printf("\t%4d\tAnzahl der Domaenen in Indizes\n", b->si_dcount); + if (b->si_dcount) + { + printf("INDEX\tDomaenen\n"); + for (si = b->si, i = 0; i <= MAXDOM; i++, si++) + { + if (!si->dom_size) + continue; + + printf(" %2d\tsize %3d", i, si->dom_size); + printf(" tuple off %4d", si->rel_off); + printf(" batch off %4d\n", si->tupo_off); + } + } + + printf("VALUES\n"); + tupcnt = b->num_updts; + while (tupcnt--) + { + printf("%ld", tupcnt); + getbatch(&oldtid, b->tido_size);/* read old tid */ + getbatch(oldtup, b->tupo_size); /* and portions of old tuple */ + getbatch(newtup, b->tupn_size); /* and the newtup */ + getbatch(&newtid, b->tidn_size);/* and the new tid */ + if (b->tido_size) + { + printf("\told"); + AAdumptid(&oldtid); + } + if (b->tupo_size) + { + printf("\toldtup:\t"); + for (i = 0; i < b->tupo_size; i++) + AAxputchar(oldtup[i]); + putchar('\n'); + } + if (b->tidn_size) + { + printf("\tnew"); + AAdumptid(&newtid); + } + if (b->tupn_size) + { + printf("\tnewtup:\t"); + for (i = 0; i < b->tupn_size; i++) + AAxputchar(newtup[i]); + putchar('\n'); + } + } +} + + +rubproc() +{ + AAunlall(); + fflush(stdout); + exit(0); +} diff --git a/WEGA/contrib/ingres/dbs/src/sys/printadmin.c b/WEGA/contrib/ingres/dbs/src/sys/printadmin.c new file mode 100644 index 0000000..75c5e86 --- /dev/null +++ b/WEGA/contrib/ingres/dbs/src/sys/printadmin.c @@ -0,0 +1,101 @@ +# include +# include "../conf/gen.h" +# include "../h/dbs.h" +# include "../h/access.h" +# include "../h/aux.h" +# include "../h/bs.h" + +# ifdef P8000 +ret_buf AAjmp_buf; +# else +jmp_buf AAjmp_buf; +# endif + +extern int AAdbstat; + +main(argc, argv) +int argc; +char *argv[]; +{ + struct admin ad; + register int i; + register int fp; + register char *db; + extern char *AAdbpath; + extern char *AAproc_name; + extern char *Parmvect[]; + extern char *Flagvect[]; +# ifdef SETBUF + char stdbuf[BUFSIZ]; + + setbuf(stdout, stdbuf); +# endif + + AAproc_name = "ADMIN"; + +# ifdef xSTR1 + AAtTrace(&argc, argv, 'X'); +# endif + + i = initucode(argc, argv, TRUE, (char *) 0, -1); + db = Parmvect[0]; + switch (i) + { + case 0: + case 5: + break; + + case 1: + case 6: + AAsyserr(0, "Die Datenbank '%s' existiert nicht", db); + + case 2: + AAsyserr(0, "Sie duerfen auf die Datenbank '%s' nicht zugreifen", db); + + case 3: + AAsyserr(0, "Sie sind kein eingetragener DBS-Nutzer"); + + case 4: + printf("Sie haben keinen Datenbankname angegeben\n"); + usage: + AAsyserr(0, "HINWEIS: admin db_name"); + + default: + AAsyserr(22000, AAproc_name, i); + } + + if (Flagvect[0]) + { + printf("Fuer dieses Kommando sind keine Flags gestattet\n"); + goto usage; + } + + if (Parmvect[1]) + goto usage; + + if (!(AAdbstat & U_SUPER)) + AAsyserr(0, "Sie duerfen ADMIN nicht verwenden"); + + if (chdir(AAdbpath) < 0) + AAsyserr(22001, AAproc_name, db); + + if ((fp = open(AA_ADMIN, 0)) < 0) + AAsyserr(0, "Fehler beim Eroeffnen des DBA file '%s/admin'", AAdbpath); + if (read(fp, &ad, sizeof ad) != sizeof ad) + AAsyserr(22076); + + printf("Datenbank %s, DBA %.2s, Flags 0%o\n", db, ad.adhdr.adowner, ad.adhdr.adflags); + + AAprdesc(&ad.adreld); + printf("\n\n"); + AAprdesc(&ad.adattd); + fflush(stdout); + exit(0); +} + + +rubproc() +{ + fflush(stdout); + exit(1); +}