private function processLengthScale($intTypmod, $strName) { // Define the return array $arrRetVal = array('length' => null, 'scale' => null); // Some datatypes don't have a Typmod if ($intTypmod == -1) { return $arrRetVal; } // if ($intTypmod == -1) // Numeric Datatype? if ($strName == PgSQLTypes::getNativeType(CreoleTypes::NUMERIC)) { $intLen = $intTypmod - 4 >> 16; $intPrec = $intTypmod - 4 & 0xffff; $intLen = sprintf("%ld", $intLen); if ($intPrec) { $intPrec = sprintf("%ld", $intPrec); } // if ($intPrec) $arrRetVal['length'] = $intLen; $arrRetVal['scale'] = $intPrec; } elseif ($strName == PgSQLTypes::getNativeType(CreoleTypes::TIME) || $strName == 'timetz' || $strName == PgSQLTypes::getNativeType(CreoleTypes::TIMESTAMP) || $strName == 'timestamptz' || $strName == 'interval' || $strName == 'bit') { $arrRetVal['length'] = sprintf("%ld", $intTypmod); } else { $arrRetVal['length'] = sprintf("%ld", $intTypmod - 4); } // else return $arrRetVal; }