summaryrefslogtreecommitdiffstats
path: root/storage/connect/tabcol.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /storage/connect/tabcol.cpp
parentInitial commit. (diff)
downloadmariadb-upstream.tar.xz
mariadb-upstream.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'storage/connect/tabcol.cpp')
-rw-r--r--storage/connect/tabcol.cpp169
1 files changed, 169 insertions, 0 deletions
diff --git a/storage/connect/tabcol.cpp b/storage/connect/tabcol.cpp
new file mode 100644
index 00000000..93de0598
--- /dev/null
+++ b/storage/connect/tabcol.cpp
@@ -0,0 +1,169 @@
+/************* TabCol C++ Functions Source Code File (.CPP) ************/
+/* Name: TABCOL.CPP Version 2.7 */
+/* */
+/* (C) Copyright to the author Olivier BERTRAND 1998-2015 */
+/* */
+/* This file contains the PlugDB++ XTAB, COLUMN and XORDER methods. */
+/***********************************************************************/
+
+/***********************************************************************/
+/* Include relevant MariaDB header file. */
+/***********************************************************************/
+#include "my_global.h"
+
+/***********************************************************************/
+/* Include required application header files */
+/* global.h is header containing all global Plug declarations. */
+/* plgdbsem.h is header containing the DB applic. declarations. */
+/* tabcol.h is header containing XTAB, and XORDER declares. */
+/***********************************************************************/
+#include "global.h"
+#include "plgdbsem.h"
+#include "xtable.h"
+#include "tabcol.h"
+
+/***********************************************************************/
+/* XTAB public constructor. */
+/***********************************************************************/
+XTAB::XTAB(LPCSTR name, LPCSTR srcdef) : Name(name)
+ {
+ Next = NULL;
+ To_Tdb = NULL;
+ Srcdef = srcdef;
+ Schema = NULL;
+ Qualifier = NULL;
+
+ if (trace(1))
+ htrc("XTAB: making new TABLE %s %s\n", Name, Srcdef);
+
+ } // end of XTAB constructor
+
+/***********************************************************************/
+/* XTAB public constructor as a copy of another table. */
+/***********************************************************************/
+XTAB::XTAB(PTABLE tp) : Name(tp->Name)
+ {
+ Next = NULL;
+ To_Tdb = NULL;
+ Srcdef = tp->Srcdef;
+ Schema = tp->Schema;
+ Qualifier = tp->Qualifier;
+
+ if (trace(1))
+ htrc(" making copy TABLE %s %s\n", Name, SVP(Srcdef));
+
+ } // end of XTAB constructor
+
+/***********************************************************************/
+/* Link the tab2 tables to the tab1(this) table chain. */
+/***********************************************************************/
+PTABLE XTAB::Link(PTABLE tab2)
+ {
+ PTABLE tabp;
+
+ if (trace(1))
+ htrc("Linking tables %s... to %s\n", Name, tab2->Name);
+
+ for (tabp = this; tabp->Next; tabp = tabp->Next) ;
+
+ tabp->Next = tab2;
+ return (this);
+ } /* end of Link */
+
+/***********************************************************************/
+/* Make file output of XTAB contents. */
+/***********************************************************************/
+void XTAB::Printf(PGLOBAL g, FILE *f, uint n)
+ {
+ char m[64];
+
+ memset(m, ' ', n); /* Make margin string */
+ m[n] = '\0';
+
+ for (PTABLE tp = this; tp; tp = tp->Next) {
+ fprintf(f, "%sTABLE: %s.%s %s\n",
+ m, SVP(tp->Schema), tp->Name, SVP(tp->Srcdef));
+ PlugPutOut(g, f, TYPE_TDB, tp->To_Tdb, n + 2);
+ } /* endfor tp */
+
+ } /* end of Printf */
+
+/***********************************************************************/
+/* Make string output of XTAB contents. */
+/***********************************************************************/
+void XTAB::Prints(PGLOBAL, char *ps, uint z)
+ {
+ char buf[128];
+ int i, n = (int)z - 1;
+
+ *ps = '\0';
+
+ for (PTABLE tp = this; tp && n > 0; tp = tp->Next) {
+ i = sprintf(buf, "TABLE: %s.%s %s To_Tdb=%p ",
+ SVP(tp->Schema), tp->Name, SVP(tp->Srcdef), tp->To_Tdb);
+ strncat(ps, buf, n);
+ n -= i;
+ } // endif tp
+
+ } /* end of Prints */
+
+
+/***********************************************************************/
+/* COLUMN public constructor. */
+/***********************************************************************/
+COLUMN::COLUMN(LPCSTR name) : Name(name)
+ {
+ To_Table = NULL;
+ To_Col = NULL;
+ Qualifier = NULL;
+
+ if (trace(1))
+ htrc(" making new COLUMN %s\n", Name);
+
+ } // end of COLUMN constructor
+
+/***********************************************************************/
+/* COLUMN SetFormat: should never be called. */
+/***********************************************************************/
+bool COLUMN::SetFormat(PGLOBAL g, FORMAT&)
+ {
+ strcpy(g->Message, MSG(NO_FORMAT_COL));
+ return true;
+ } // end of SetFormat
+
+/***********************************************************************/
+/* Make file output of COLUMN contents. */
+/***********************************************************************/
+void COLUMN::Printf(PGLOBAL g, FILE *f, uint n)
+ {
+ char m[64];
+
+ memset(m, ' ', n); // Make margin string
+ m[n] = '\0';
+
+ if (Name)
+ fprintf(f, "%sCOLUMN: %s.%s\n", m,
+ ((!Qualifier) ? (PSZ)"?" : Qualifier), Name);
+ else // LNA
+ fprintf(f, "%sC%d\n", m, (!Qualifier) ? 0 : *(int *)Qualifier);
+
+ PlugPutOut(g, f, TYPE_TABLE, To_Table, n + 2);
+ PlugPutOut(g, f, TYPE_XOBJECT, To_Col, n + 2);
+ } /* end of Printf */
+
+/***********************************************************************/
+/* Make string output of COLUMN contents. */
+/***********************************************************************/
+void COLUMN::Prints(PGLOBAL, char *ps, uint z)
+ {
+ char buf[80];
+
+ if (Name)
+ sprintf(buf, "COLUMN: %s.%s table=%p col=%p",
+ ((!Qualifier) ? (PSZ)"?" : Qualifier), Name, To_Table, To_Col);
+ else // LNA
+ sprintf(buf, "C%d", (!Qualifier) ? 0 : *(int *)Qualifier);
+
+ strncpy(ps, buf, z);
+ ps[z - 1] = '\0';
+ } /* end of Prints */