tokuhirom's Blog

DBD::mysql の quote_identifier の挙動

mysql.xs のこのへんを参照のこと。

    case SQL_IDENTIFIER_QUOTE_CHAR:
        /*XXX What about a DB started in ANSI mode? */
        /* Swiped from MyODBC's get_info.c */
        using_322 = ((strncmp(mysql_get_server_info(imp_dbh->pmysql),"3.

22",4) == 0) ? 1 : 0 ); retsv = newSVpv(!using_322 ? "`" : " ", 1); break;

要するに、` がハードコードされている!!!!!!!!

そして、quote_identifier の実装は https://github.com/perl5-dbi/dbi/blob/master/DBI.pm#L1564 のへんにある。quote character を用意するまでは DBD のしごとで、実際にクオートするのは DBI のしごとってことみたい。