keboola / php-db-import

MIT License
4 stars 0 forks source link

bind parameters #45

Open ondrejhlavacek opened 5 years ago

ondrejhlavacek commented 5 years ago

bindovat identifkátory jde

insert into table identifier(?) values (?), (?), (?);

bind_variable A bind variable, in the form of ? or :variable, which can be used by clients/programmatic interfaces that support binding (JDBC, ODBC, Python, etc.).

https://docs.snowflake.net/manuals/sql-reference/identifier-literal.html#examples

via https://keboola.slack.com/archives/C0308KGPP/p1543316594029300

Halama commented 5 years ago

Vyzkoušel jsem to nasimulovat a failuje to https://travis-ci.org/keboola/php-db-import/builds/461192914#L2805

ErrorException: odbc_prepare(): SQL error: SQL compilation error: error line 0 at position -1

Až teď jsem si ale všimnul že to padne už na odbc_prepare.

Halama commented 5 years ago

Postupně bude potřeba vyzkoušet:

Halama commented 5 years ago

Původní issue https://github.com/keboola/app-snowflake-dwh-manager/issues/3

tomasfejfar commented 5 years ago

Pozor na rozíl mezi create table identifier('abc') a insert into table identifier('abc'). Moje podezření je, že identifier vrací nějaký interní pointer na EXISTUJÍCÍ resource. Takže pokud se použije např. v create table, tak se nějak poskáče, protože ten identifier na který by to měl být pointer neexistuje.

Halama commented 5 years ago

Asi to pak bude potřeba prohnat přes support. Protože bez bindování to funguje např. vytvoření neexistující tabulky CREATE TABLE IDENTIFIER('"some_test"') (c1 TEXT); projde v pohodě.

Halama commented 5 years ago

Stejně to vypadá že nejde bindovat parametry pro SHOW dotazy:

$this->getDb()->fetchAll(
            "SHOW TABLES LIKE ? IN SCHEMA TEST",
            [
                $tableName
            ]
        );

SQL error: SQL compilation error: syntax error line 1 at position 17 unexpected '?'., SQL state 37000 in SQLPrepare