00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 require_once 'creole/CreoleTypes.php';
00024
00032 class PgSQLTypes extends CreoleTypes {
00033
00035 private static $typeMap = array (
00036 "int2" => CreoleTypes::SMALLINT,
00037 "int4" => CreoleTypes::INTEGER,
00038 "oid" => CreoleTypes::INTEGER,
00039 "int8" => CreoleTypes::BIGINT,
00040 "cash" => CreoleTypes::DOUBLE,
00041 "money" => CreoleTypes::DOUBLE,
00042 "numeric" => CreoleTypes::NUMERIC,
00043 "float4" => CreoleTypes::REAL,
00044 "float8" => CreoleTypes::DOUBLE,
00045 "bpchar" => CreoleTypes::CHAR,
00046 "char" => CreoleTypes::CHAR,
00047 "char2" => CreoleTypes::CHAR,
00048 "char4" => CreoleTypes::CHAR,
00049 "char8" => CreoleTypes::CHAR,
00050 "char16" => CreoleTypes::CHAR,
00051 "varchar" => CreoleTypes::VARCHAR,
00052 "text" => CreoleTypes::VARCHAR,
00053 "name" => CreoleTypes::VARCHAR,
00054 "filename" => CreoleTypes::VARCHAR,
00055 "bytea" => CreoleTypes::BINARY,
00056 "bool" => CreoleTypes::BOOLEAN,
00057 "date" => CreoleTypes::DATE,
00058 "time" => CreoleTypes::TIME,
00059 "abstime" => CreoleTypes::TIMESTAMP,
00060 "timestamp" => CreoleTypes::TIMESTAMP,
00061 "timestamptz" => CreoleTypes::TIMESTAMP,
00062 "_bool" => CreoleTypes::ARR,
00063 "_char" => CreoleTypes::ARR,
00064 "_int2" => CreoleTypes::ARR,
00065 "_int4" => CreoleTypes::ARR,
00066 "_text" => CreoleTypes::ARR,
00067 "_oid" => CreoleTypes::ARR,
00068 "_varchar" => CreoleTypes::ARR,
00069 "_int8" => CreoleTypes::ARR,
00070 "_float4" => CreoleTypes::ARR,
00071 "_float8" => CreoleTypes::ARR,
00072 "_abstime" => CreoleTypes::ARR,
00073 "_date" => CreoleTypes::ARR,
00074 "_time" => CreoleTypes::ARR,
00075 "_timestamp" => CreoleTypes::ARR,
00076 "_numeric" => CreoleTypes::ARR,
00077 "_bytea" => CreoleTypes::ARR,
00078 );
00079
00081 private static $reverseMap = null;
00082
00083 public static function getType($pgsqlType)
00084 {
00085 $t = strtolower($pgsqlType);
00086 if (isset(self::$typeMap[$t])) {
00087 return self::$typeMap[$t];
00088 } else {
00089 return CreoleTypes::OTHER;
00090 }
00091 }
00092
00093 public static function getNativeType($creoleType)
00094 {
00095 if (self::$reverseMap === null) {
00096 self::$reverseMap = array_flip(self::$typeMap);
00097 }
00098 return @self::$reverseMap[$creoleType];
00099 }
00100
00101 }