ODBC-Fremddatenquelle (SAP SQL Anywhere 17, 16bit) in einer PostGreSQL 15 - Datenbank

Hallo zusammen,
ein SELECT auf eine Fremdtabelle liefert keine Daten / läuft unendlich lange (keine Ergebnisanzeige).

Im Einzelnen: Ich habe – ohne Fehlermeldungen bei den SQL-Anweisungen - die 64bit-ODBC-Datenquelle in meiner PostGreSQL-Datenbank eingebunden.

Ich nutze:

  • pgAdmin 4 v7; PostGreSQL 15.3-3 Windows x64;
  • SAP SQL Anywhere 17 64 bit (dazu habe ich eine 64bit-ODBC-Daten - System-DSN erstellt und getestet)

So habe ich den ODBC-FDW eingebunden, den Fremdserver eingebunden, den Benutzer Postgres für den Zugriff berechtigt und die Fremdtabelle (Proxytabelle) eingerichtet:

– 1. Foreign Data Wrapper: odbc_fdw**
CREATE FOREIGN DATA WRAPPER odbc_fdw
VALIDATOR public.odbc_fdw_validator
HANDLER public.odbc_fdw_handler;

ALTER FOREIGN DATA WRAPPER odbc_fdw OWNER TO postgres;

– 2. Foreign Server: FS__cc_demo_000

CREATE SERVER “FS__cc_demo_000” TYPE ‘SQL Anywhere 17’
FOREIGN DATA WRAPPER odbc_fdw OPTIONS (dsn ‘cc_demo_000’);

ALTER SERVER “FS__cc_demo_000” OWNER TO postgres;

– 3. User Mapping : postgres

CREATE USER MAPPING FOR postgres SERVER “FS__cc_demo_000” OPTIONS (odbc_username ‘fba’, odbc_password ‘qweqwe’);

– 4. FOREIGN TABLE: public.cc_betriebsdaten_kategorie_arten

CREATE FOREIGN TABLE IF NOT EXISTS public.cc_betriebsdaten_kategorie_arten(
pk_betriebsdaten_kategorie_art integer NULL,
betriebsdaten_kategorie_art text NULL COLLATE pg_catalog.“default”
)
SERVER “FS__cc_demo_000”
OPTIONS (schema_name ‘public’, table_name ‘cc_betriebsdaten_kategorie_arten’);

ALTER FOREIGN TABLE public.cc_betriebsdaten_kategorie_arten OWNER TO postgres;

Dieser SELECT-Befehl schlägt fehl:

SELECT pk_betriebsdaten_kategorie_art, betriebsdaten_kategorie_art FROM public.cc_betriebsdaten_kategorie_arten;

Ist hier irgendwo ein Denkfehler?

Schlägt die Abfrage fehl oder läuft sie ewig, wie eingangs behauptet?

Leider ist der odbc_fdw so blöd, daß er bei EXPLAIN nur die Größe der Tabelle anzeigt, nicht die drüben ausgeführte Abfrage. Vielleicht kann man die ewige Abfrage auf dem entfernten System ermitteln. Man kann auch versuchen, sie zu erraten: odbc_fdw kann nur die erste Bedingung mitschicken, und nur dann, wenn sie ein Vergleich mit = ist. Also kann es durchaus sein, daß die gesamte Tabelle geladen wird. Würde das ewiges Warten erklären?

In Anbertacht all dieser Mängel: warum odbc_fdw? Möglicherweise gibt es einen FDW, der speziell für diese Art von Datenquellen geschrieben wurde.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.