Browse Source

Merge pull request #76 from edhollandAL/devel

Allow type cache query to fail
David N. Welton 9 years ago
parent
commit
dd32e48dff
1 changed files with 9 additions and 2 deletions
  1. 9 2
      src/epgsql.erl

+ 9 - 2
src/epgsql.erl

@@ -109,8 +109,15 @@ update_type_cache(C) ->
     Query = "SELECT typname, oid::int4, typarray::int4"
     Query = "SELECT typname, oid::int4, typarray::int4"
             " FROM pg_type"
             " FROM pg_type"
             " WHERE typname = ANY($1::varchar[])",
             " WHERE typname = ANY($1::varchar[])",
-    {ok, _, TypeInfos} = equery(C, Query, [DynamicTypes]),
-    ok = gen_server:call(C, {update_type_cache, TypeInfos}).
+    case equery(C, Query, [DynamicTypes]) of
+        {ok, _, TypeInfos} ->
+            ok = gen_server:call(C, {update_type_cache, TypeInfos});
+        {error, {error, error, _, _,
+                 <<"column \"typarray\" does not exist in pg_type">>, _}} ->
+            %% Do not fail connect if pg_type table in not in the expected
+            %% format. Known to happen for Redshift which is based on PG v8.0.2
+            ok
+    end.
 
 
 -spec close(connection()) -> ok.
 -spec close(connection()) -> ok.
 close(C) ->
 close(C) ->