/**
  * get a function format string
  *
  * @param   SQLFunction func
  * @return  string
  * @throws  lang.IllegalArgumentException
  */
 public function formatFunction(SQLFunction $func)
 {
     if ('concat' == $func->func) {
         return '(' . implode(' + ', array_fill(0, sizeof($func->args), '%s')) . ')';
     }
     return parent::formatFunction($func);
 }
 /**
  * Get a function format string
  *
  * @param   SQLFunction func
  * @return  string
  * @throws  lang.IllegalArgumentException
  */
 public function formatFunction(SQLFunction $func)
 {
     $func_i = $func->func . '_' . sizeof($func->args);
     switch ($func->func) {
         case 'concat':
             return '(' . implode(' + ', array_fill(0, sizeof($func->args), '%s')) . ')';
         default:
             if (isset(self::$implementations[$func_i])) {
                 return self::$implementations[$func_i];
             }
             return parent::formatFunction($func);
     }
 }