bool PIVOTDEF::DefineAM(PGLOBAL g, LPCSTR am, int poff) { char *p1, *p2; PHC hc = ((MYCAT*)Cat)->GetHandler(); if (PRXDEF::DefineAM(g, am, poff)) return TRUE; Tabname = (char*)Tablep->GetName(); DB = (char*)Tablep->GetQualifier(); Tabsrc = (char*)Tablep->GetSrc(); Host = GetStringCatInfo(g, "Host", "localhost"); User = GetStringCatInfo(g, "User", "*"); Pwd = GetStringCatInfo(g, "Password", NULL); Picol = GetStringCatInfo(g, "PivotCol", NULL); Fncol = GetStringCatInfo(g, "FncCol", NULL); // If fncol is like avg(colname), separate Fncol and Function if (Fncol && (p1 = strchr(Fncol, '(')) && (p2 = strchr(p1, ')')) && (*Fncol != '"') && (!*(p2+1))) { *p1++ = '\0'; *p2 = '\0'; Function = Fncol; Fncol = p1; } else Function = GetStringCatInfo(g, "Function", "SUM"); GBdone = GetBoolCatInfo("Groupby", false); Accept = GetBoolCatInfo("Accept", false); Port = GetIntCatInfo("Port", 3306); Desc = (Tabsrc) ? Tabsrc : Tabname; return FALSE; } // end of DefineAM
bool TBLDEF::DefineAM(PGLOBAL g, LPCSTR, int) { char *tablist, *dbname, *def = NULL; Desc = "Table list table"; tablist = GetStringCatInfo(g, "Tablist", ""); dbname = GetStringCatInfo(g, "Dbname", "*"); def = GetStringCatInfo(g, "Srcdef", NULL); Ntables = 0; if (*tablist) { char *p, *pn, *pdb; PTABLE tbl; for (pdb = tablist; ;) { if ((p = strchr(pdb, ','))) *p = 0; // Analyze the table name, it may have the format: // [dbname.]tabname if ((pn = strchr(pdb, '.'))) { *pn++ = 0; } else { pn = pdb; pdb = dbname; } // endif p // Allocate the TBLIST block for that table tbl = new(g) XTAB(pn, def); tbl->SetSchema(pdb); if (trace) htrc("TBL: Name=%s db=%s\n", tbl->GetName(), tbl->GetSchema()); // Link the blocks if (Tablep) Tablep->Link(tbl); else Tablep = tbl; Ntables++; if (p) pdb = pn + strlen(pn) + 1; else break; } // endfor pdb Maxerr = GetIntCatInfo("Maxerr", 0); Accept = GetBoolCatInfo("Accept", false); Thread = GetBoolCatInfo("Thread", false); } // endif tablist return FALSE; } // end of DefineAM