--- /dev/null
+.. change::
+ :tags: bug, sql
+ :tickets: 5353
+
+ Added :meth:`.Select.with_hint` output to the generic SQL string that is
+ produced when calling ``str()`` on a statement. Previously, this clause
+ would be omitted under the assumption that it was dialect specific.
+ The hint text is presented within brackets to indicate the rendering
+ of such hints varies among backends.
+
def visit_empty_set_expr(self, type_):
return "SELECT 1 WHERE 1!=1"
+ def get_from_hint_text(self, table, text):
+ return "[%s]" % text
+
class DDLCompiler(Compiled):
@util.memoized_property
"'%s'" % value,
)
+ def test_with_hint_table(self):
+ stmt = (
+ select([table1])
+ .select_from(
+ table1.join(table2, table1.c.myid == table2.c.otherid)
+ )
+ .with_hint(table1, "use some_hint")
+ )
+
+ # note that some dialects instead use the "with_select_hint"
+ # hook to put the 'hint' up front
+ eq_ignore_whitespace(
+ str(stmt),
+ "SELECT mytable.myid, mytable.name, mytable.description "
+ "FROM mytable [use some_hint] "
+ "JOIN myothertable ON mytable.myid = myothertable.otherid",
+ )
+
+ def test_with_hint_statement(self):
+ stmt = (
+ select([table1])
+ .select_from(
+ table1.join(table2, table1.c.myid == table2.c.otherid)
+ )
+ .with_statement_hint("use some_hint")
+ )
+
+ eq_ignore_whitespace(
+ str(stmt),
+ "SELECT mytable.myid, mytable.name, mytable.description "
+ "FROM mytable "
+ "JOIN myothertable ON mytable.myid = myothertable.otherid "
+ "use some_hint",
+ )
+
class KwargPropagationTest(fixtures.TestBase):
@classmethod