Yes, the test should be skipped, IMHO. In the adodbapi test suite, it was necessary to do this in many cases, so a function to determine the underlying dialect of SQL at the moment was added to the test suite. (I often wish there were a way to add it to the connection object.) For example:<br>
<Python><br> def testDataTypeBinary(self):<br> if self.getEngine() == 'MySQL':<br> pass #self.helpTestDataType("BLOB",'BINARY',adodbapi.Binary('\x00\x01\xE2\x40'))<br>
else:<br> binfld = str2bytes('\x00\x01\xE2\x40') # works in Python 2 or 3<br> self.helpTestDataType("binary(4)",'BINARY',adodbapi.Binary(binfld))<br> self.helpTestDataType("varbinary(100)",'BINARY',adodbapi.Binary(binfld))<br>
self.helpTestDataType("image",'BINARY',adodbapi.Binary(binfld))<br><\Python><br><br>Question for the group: <br><br> I think it would be handy if such a function (or perhaps an attribute) were added to the database object. It could contain the "scheme" as a string, perhaps, or perhaps something more definitive. Such a feature would be very helpful in an ADO implementation. <br>
<br>Would the group entertain such a thing? <br><br>Could it/how should it be done?<br>--<br>Vernon Cole<br><br><br><div class="gmail_quote">On Tue, Jun 23, 2009 at 8:30 AM, Drew Smathers <span dir="ltr"><<a href="mailto:drew.smathers@gmail.com">drew.smathers@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">On Tue, Jun 23, 2009 at 5:16 AM, James Henstridge<<a href="mailto:james@jamesh.id.au">james@jamesh.id.au</a>> wrote:<br>
> On Mon, Jun 22, 2009 at 11:44 PM, Jason Baker<<a href="mailto:jbaker@zeomega.com">jbaker@zeomega.com</a>> wrote:<br>
>> There are two tests left that are giving me trouble:<br>
>><br>
>> def test_is_in_empty_result_set(self):<br>
>> result1 = self.store.find(Foo, Foo.id < 10)<br>
>> result2 = self.store.find(Foo, Or(Foo.id > 20, Foo.id.is_in(result1)))<br>
>> self.assertEquals(result2.count(), 1)<br>
>><br>
>> def test_is_in_empty_list(self):<br>
>> result2 = self.store.find(Foo, Eq(False, And(True, Foo.id.is_in([]))))<br>
>> self.assertEquals(result2.count(), 3)<br>
>><br>
>> Both of these tests pass a Python Boolean to the backend. The problem<br>
>> is that these both pass a boolean value in the WHERE clause, which<br>
>> there's really not any direct translation for in Oracle. I tried it<br>
>> with this compile function:<br>
>><br>
>> @compile.when(bool)<br>
>> def compile_bool(compile, expr, state):<br>
>> return compile_eq(compile, Eq(1, int(expr)), state)<br>
>><br>
>> This essentially converts a bool to a 1=1 or 1=0 expression. This<br>
>> works with the first test, but the second one gives me this:<br>
>><br>
>> [10:27:38.064000] EXECUTE: 'SELECT COUNT(*) FROM foo WHERE 1 = 0 = (1<br>
>> = 1 AND 1 = 0)', (1, 0, 1, 1, 1, 0)<br>
>> [10:27:38.111000] ERROR: ORA-00933: SQL command not properly ended<br>
>><br>
>> Which is of course gibberish in Oracle. I can run the test without a<br>
>> WHERE clause and have it work, but will anything break if the backend<br>
>> can't handle an expression of the form FALSE = (TRUE AND FALSE)? Or<br>
>> is there a better way to do this that I'm missing?<br>
><br>
> If this is just a case of parentheses, it might be easiest to do the following:<br>
><br>
> @compile.when(bool)<br>
> def compile_bool(compile, expr, state):<br>
> if expr:<br>
> return "(1=1)"<br>
> else:<br>
> return "(1=0)"<br>
><br>
> That should avoid the operator precedence problems.<br>
><br>
> James.<br>
><br>
<br>
</div></div>The problem is more than operator precendence with Oracle; Oracle<br>
simply doesn't have a boolean type (outside of PL/SQL) and can't<br>
understand a boolean comparison: (1=0) = (1=1). This would result in<br>
an ORA-00933. In that respect, I don't see how it's possible to make<br>
test_is_in_empty_list pass since it involves a boolean comparison.<br>
Given that boolean data type is optional in the SQL spec, would it not<br>
be sufficient to skip this test for oracle?<br>
<font color="#888888"><br>
-Drew<br>
</font><div><div></div><div class="h5"><br>
--<br>
storm mailing list<br>
<a href="mailto:storm@lists.canonical.com">storm@lists.canonical.com</a><br>
Modify settings or unsubscribe at: <a href="https://lists.ubuntu.com/mailman/listinfo/storm" target="_blank">https://lists.ubuntu.com/mailman/listinfo/storm</a><br>
</div></div></blockquote></div><br>