On 11/29/24 17:47, Adrian Klaver wrote:
> On 11/29/24 17:34, PopeRigby wrote:
>> My HDD recently failed so I'm trying to restore my backup, but I'm
>> running into some errors.
>>
>> I've been using a systemd service that periodically backs up my
>> cluster with pg_dumpall, and I'm using this command to restore:
>>
>> sudo psql -f backup.sql postgres
>>
>> I'm getting this output:
>> https://gist.github.com/poperigby/d5a0103b9de1eba95aba783007e557ea
>
>
> psql:all.sql:4104: ERROR: type "earth" does not exist
> LINE 1: ...ians($1))*sin(radians($2))),earth()*sin(radians($1)))::earth
>
> QUERY: SELECT
>
cube(cube(cube(earth()*cos(radians($1))*cos(radians($2))),earth()*cos(radians($1))*sin(radians($2))),earth()*sin(radians($1)))::earth
> CONTEXT: SQL function "ll_to_earth" during inlining
>
> CREATE TABLE public.geodata_places (
> id integer NOT NULL,
> name character varying(200) NOT NULL,
> longitude double precision NOT NULL,
> latitude double precision NOT NULL,
> "countryCode" character(2) NOT NULL,
> "admin1Code" character varying(20),
> "admin2Code" character varying(80),
> "modificationDate" date NOT NULL,
> "earthCoord" public.earth GENERATED ALWAYS AS
> (public.ll_to_earth(latitude, longitude)) STORED,
> "admin1Name" character varying,
> "admin2Name" character varying,
> "alternateNames" character varying
> );
>
>
> Looks like an extension or extensions where not installed before the
> restore was done.
>
>
>>
>> This is my (redacted) database dump:
>> https://gist.github.com/poperigby/fcb59eb6c22c6051800e06a0ec482b49
>>
>>
>
Weird, I have all the same software that was installed before I
restored, as I'm using NixOS. I'm guessing the earth type is provided by
earthdistance, and in the SQL script it's able to successfully install
cube, vector, and earthdistance. I think earthdistance and cube are
actually built-in modules, right?
I ran the following commands, and earth is even one of the listed types:
postgres=# CREATE EXTENSION earthdistance;
CREATE EXTENSION
postgres=# SELECT t.typname
FROM pg_catalog.pg_type t
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
JOIN pg_catalog.pg_extension e ON e.extnamespace = n.oid
WHERE e.extname = 'earthdistance';
typname
---------
_cube
_earth
cube
earth
(4 rows)
The earthdistance module is even getting added between the table with
the earth type is added, so shouldn't there be no problem?