예제 #1
0
 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);
 }