function routine_attrs(Modyllic_Schema_Routine $routine) { if ($routine->args_type != Modyllic_Schema_Routine::ARGS_TYPE_DEFAULT) { $this->extend("ARGS %lit", $routine->args_type); } if ($routine instanceof Modyllic_Schema_Proc) { switch ($routine->returns["type"]) { case Modyllic_Schema_Proc::RETURNS_TYPE_DEFAULT: break; case "COLUMN": case "LIST": $this->extend("RETURNS %lit %lit", $routine->returns["type"], $routine->returns["column"]); break; case "MAP": $this->extend("RETURNS %lit (%lit,%lit)", $routine->returns["type"], $routine->returns["key"], $routine->returns["value"]); break; default: $this->extend("RETURNS %lit", $routine->returns["type"]); } } switch ($routine->txns) { case Modyllic_Schema_Routine::TXNS_DEFAULT: break; case Modyllic_Schema_Routine::TXNS_HAS: $this->extend("CONTAINS TRANSACTIONS"); break; case Modyllic_Schema_Routine::TXNS_CALL: $this->extend("CALL IN TRANSACTION"); break; case Modyllic_Schema_Routine::TXNS_NONE: $this->extend("NO TRANSACTIONS"); break; } parent::routine_attrs($routine); }