Especifique la lista de definiciones de columnas dblink de un tipo existente local

Estoy usando dblink para mover ciertos datos entre bases de datos. Todo está guardado y en buen estado, pero me pregunto si hay una manera más conveniente de definir la lista de definición de columna de un resultado de consulta de enlace doble. Puedo hacer algo como esto:

SELECT *
FROM dblink('dbname=remote', 'select * from test')
AS t1(id integer, data text); 

Las tablas con las que estoy interactuando tienen la misma definición de esquema en ambas bases de datos (remota y local). Estaba pensando en algo como:

SELECT *
FROM dblink('dbname=remote', 'select * from test')
AS t1 LIKE public.test; 

O:

SELECT *
FROM dblink('dbname=remote', 'select * from test')
AS t1::public.test;

La lista de definiciones de columnas tiende a ser bastante larga. ¿Hay algo que pueda haber pasado por alto?

EDITAR:

Como esto ha sido un problema para mí, antes de crear una pequeña función como solución alternativa.

CREATE OR REPLACE FUNCTION dblink_star_func(_conn text, _schema_name text, _table_name text)
RETURNS text
LANGUAGE PLPGSQL
VOLATILE STRICT
AS $function$
    DECLARE       
        _dblink_schema text;
        _cols          text; 
        _q             text;
        _func_name     text := format('star_%s', $3);
        _func          text;        
    BEGIN
        SELECT nspname INTO _dblink_schema
        FROM pg_namespace n, pg_extension e
        WHERE e.extname = 'dblink' AND e.extnamespace = n.oid;

        SELECT array_to_string(array_agg(column_name || ' ' || udt_name), ', ') INTO _cols
        FROM information_schema.columns
        WHERE table_schema = $2 AND table_name = $3;

        _q := format('SELECT * FROM %I.dblink(%L, %L) AS remote (%s)',
            _dblink_schema,
            _conn,
            format('SELECT * FROM %I.%I', $2, $3),
            _cols
        );

        _func := $_func$
            CREATE OR REPLACE FUNCTION %s()
            RETURNS SETOF %I.%I
            LANGUAGE SQL
            VOLATILE STRICT
            AS $ %s; $
        $_func$;

        EXECUTE format(_func, _func_name, $2, $3, _q);

        RETURN _func_name;
    END;
$function$;

Esta función crea y produce una función que ajusta la llamada dblink. Ciertamente no está destinado para el trabajo pesado, pero es conveniente. Sería bueno si resulta que no es necesario en absoluto.

> select dblink_star_func('dbname=ben', 'public', 'test');
┌──────────────────┐
│ dblink_star_func │
├──────────────────┤
│ star_test        │
└──────────────────┘
(1 row)

> select * from star_test() where data = 'success';
┌────┬─────────┐
│ id │  data   │
├────┼─────────┤
│  1 │ success │
└────┴─────────┘
(1 row)

Respuestas a la pregunta(2)

Su respuesta a la pregunta