Exemplo n.º 1
0
str
CMDcalcavg(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
	dbl avg;
	BUN vals;
	bat *bid;
	BAT *b, *s = NULL;
	gdk_return ret;

	(void) cntxt;
	(void) mb;

	bid = getArgReference_bat(stk, pci, pci->retc + 0);
	if ((b = BATdescriptor(*bid)) == NULL)
		throw(MAL, "aggr.avg", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
	if (pci->retc == pci->retc + 2) {
		bat *sid = getArgReference_bat(stk, pci, pci->retc + 1);
		if (*sid && (s = BATdescriptor(*sid)) == NULL) {
			BBPunfix(b->batCacheid);
			throw(MAL, "aggr.avg", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
		}
	}
	ret = BATcalcavg(b, s, &avg, &vals);
	BBPunfix(b->batCacheid);
	if (s)
		BBPunfix(s->batCacheid);
	if (ret != GDK_SUCCEED)
		return mythrow(MAL, "aggr.avg", OPERATION_FAILED);
	* getArgReference_dbl(stk, pci, 0) = avg;
	if (pci->retc == 2)
		* getArgReference_lng(stk, pci, 1) = vals;
	return MAL_SUCCEED;
}
Exemplo n.º 2
0
/*
 * The second example shows how you can look into the remaining
 * instructions to assess the total cost if you follow the path
 * starting at the argument given.
 */
str
RUNcostPrediction(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
	lng *cost = getArgReference_lng(stk, p, 0);
	(void) mb;
	(void) cntxt;

	*cost = 0;
	return MAL_SUCCEED;
}
Exemplo n.º 3
0
/*
 * The routine below calculates a cost based on the BAT volume in bytes.
 * The MAL compiler ensures that all arguments have been
 * assigned a value.
 */
str
RUNvolumeCost(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p)
{
	lng *cost = getArgReference_lng(stk, p, 0);
	(void) mb;

	(void) cntxt;
	*cost = getVolume(stk, p, 0); /* calculate total input size */
	return MAL_SUCCEED;
}
Exemplo n.º 4
0
str
bam_drop_file(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
	lng file_id = *getArgReference_lng(stk, pci, pci->retc);
	sht dbschema = *getArgReference_sht(stk, pci, pci->retc + 1);

	str msg;

	msg = drop_file(cntxt, "bam.drop_file", file_id, dbschema);
	if (msg != MAL_SUCCEED) {
		str msg2 = createException(MAL, "bam_drop_file",
			  "Error when dropping file with file id '" LLFMT
			  "': %s\n", file_id, msg);
		GDKfree(msg);
		return msg2;
	}

	(void) stk;
	(void) pci;
	(void) mb;

	return MAL_SUCCEED;
}