Ecto debug connection

Hello,

I’m currently attempting to connect Ecto to materialize. Materialize is a postgres compatible streaming database, it supports the pgwire protocol and prepared statements. On connect an error displays:

failed to connect: ** (Postgrex.Error) ERROR 42601 (syntax_error) Expected left square bracket, found left parenthesis

Is there a way to debug the command/statement being sent to Materialize? log: :debug only provides query logs.

Unfortunately I’m not sure how to debug the command being sent but I have a hunch this might be related to the version output from Materialize. What does Materialize output as its version string?

It might be a good idea to raise an issue on the Postgrex repository since it appears to be failing before even getting to Ecto.

1 Like

Interesting!

select * version() gives me:
PostgreSQL 9.6 on x86_64-unknown-linux-gnu (materialized 0.6.0)

select mz_version()) gives me:
v0.6.0 (9ed7c170f))

You’re correct.

I was about to replicate the error displayed:
It comes from this bootstrap query link

SELECT t.oid, t.typname, t.typsend, t.typreceive, t.typoutput, t.typinput,
           coalesce(d.typelem, t.typelem), coalesce(r.rngsubtype, 0), ARRAY (
      SELECT a.atttypid
      FROM pg_attribute AS a
      WHERE a.attrelid = t.typrelid AND a.attnum > 0 AND NOT a.attisdropped
      ORDER BY a.attnum
    )
    FROM pg_type AS t
    LEFT JOIN pg_type AS d ON t.typbasetype = d.oid
    LEFT JOIN pg_range AS r ON r.rngtypid = t.oid OR (t.typbasetype <> 0 AND r.rngtypid = t.typbasetype)
    WHERE (t.typrelid = 0)
        AND (t.typelem = 0 OR NOT EXISTS (SELECT 1 FROM pg_catalog.pg_type s WHERE s.typrelid != 0 AND s.oid = t.typelem))

Results in:

Query 1 ERROR: ERROR:  Expected left square bracket, found left parenthesis
LINE 2: ...ce(d.typelem, t.typelem), coalesce(r.rngsubtype, 0), ARRAY (
                                                                      ^
1 Like