That's interesting - well I can guarantee to you that jOOQ keeps its promise when you set those flags, *especially* when you set them three times. In particular, DSL.inline() will never produce a bind variable in jOOQ.
But your JDBC driver might parse the SQL string again, and generate synthetic bind variables. Oracle database has a server-side setting called CURSOR_SHARING = FORCE, which will parse all literals and replace them by bind variables prior to generating an execution plan. Perhaps that's done in your JDBC driver as well? What's your JDBC connection string and JDBC driver version? 2017-09-28 22:53 GMT+02:00 <[email protected]>: > I am passing my queries through proxy sql which caches the raw query > strings its forwarding to mysql. > Proxysql is seeing this as the rendered query and is then ignoring the > cache. > > On Tuesday, September 26, 2017 at 12:53:36 AM UTC-7, Lukas Eder wrote: >> >> Hello, >> >> How did you get this query string? I cannot reproduce this issue. The >> bind variable gets correctly inlined. All of your flags are correct API >> usage. >> >> Thanks, >> Lukas >> >> 2017-09-26 0:57 GMT+02:00 <[email protected]>: >> >>> I am using the latest jOOQ 3.9.5. >>> I went through the 7 step tutorial as provided on the main website. >>> Configuration: mysql running on 6033, basic credentials (this is a dummy >>> database that I setup specifically for this task) >>> >>> DB Schema is as follows >>> >>> CREATE DATABASE `library`; >>> >>> USE `library`; >>> >>> CREATE TABLE `author` ( >>> `id` int NOT NULL, >>> `first_name` varchar(255) DEFAULT NULL, >>> `last_name` varchar(255) DEFAULT NULL, >>> PRIMARY KEY (`id`) >>> ); >>> >>> >>> >>> >>> I generated the backing code using the default settings - and the >>> program works >>> import org.jooq.*; >>> import org.jooq.conf.ParamType; >>> import org.jooq.conf.Settings; >>> import org.jooq.conf.StatementType; >>> import org.jooq.impl.DSL; >>> >>> import static library.Tables.*; >>> import static org.jooq.impl.DSL.*; >>> >>> >>> import java.sql.*; >>> >>> public class JooqTutorial { >>> public static void main(String[] args) { >>> String username = "root"; >>> String password = "root"; >>> String url = "jdbc:mysql://127.0.0.1:6033/library"; >>> >>> try (Connection conn = DriverManager.getConnection(url, >>> username, password)) { >>> Settings settings = new Settings(); >>> settings.setStatementType(StatementType.STATIC_STATEMENT); >>> settings.setParamType(ParamType.INLINED); >>> DSLContext create = DSL.using(conn, SQLDialect.MYSQL, >>> settings); >>> SelectConditionStep<Record> fred = >>> create.select().from(AUTHOR).where( >>> AUTHOR.FIRST_NAME.eq(inline("fred")) >>> ); >>> Result<Record> result = fred.fetch(); >>> for (Record r : result) { >>> Integer id = r.getValue(AUTHOR.ID); >>> String firstName = r.getValue(AUTHOR.FIRST_NAME); >>> String lastName = r.getValue(AUTHOR.LAST_NAME); >>> System.out.printf("Id:%d %s, %s\n", id, lastName, >>> firstName); >>> } >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> } >>> >>> However, the code is not respecting the inline setting. Instead the >>> following statement is being generated and sent to the db >>> select `library`.`author`.`id`, `library`.`author`.`first_name`, >>> `library`.`author`.`last_name` from `library`.`author` where >>> `library`.`author`.`first_name` = ? >>> >>> >>> I know I have technically redundant settings and calls to inline, but I >>> figure at least one of them should have resulted in the query being sent >>> 'inline' and not as a prepared statement. I am not sure why it isn't >>> inlining the value of 'fred' as described in the documentation. >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jOOQ User Group" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
