The problem is sqlalchemy doesn't recognize the type BigInt
Step to reproduce this issue:
Run the unit tests,
$./run_tests.sh api
Then check the logs,
$head -100 subunit.log
time: 2013-03-05 21:47:33.002802Z
test: nova.tests.api.ec2.test_cinder_cloud.CinderCloudTestCase.test_create_snapshot
time: 2013-03-05 21:47:34.087936Z
tags: worker-1
successful: nova.tests.api.ec2.test_cinder_cloud.CinderCloudTestCase.test_create_snapshot [ multipart
Content-Type: text/plain;charset=utf8
pythonlogging:'nova'
2A1
Loading network driver 'nova.network.linux_net'
Starting conductor node (version 2013.1)
Loading compute driver 'nova.virt.fake.FakeDriver'
Starting compute node (version 2013.1)
Updating host status
Auditing locally available compute resources
Free ram (MB): 7680
Free disk (GB): 1028
Free VCPUS: 1
Compute_service record created for 07698146867b4ee98105daf0c0b6a9b3:fake-mini
Starting scheduler node (version 2013.1)
Loading network driver 'nova.network.linux_net'
Starting network node (version 2013.1)
Create volume of 1 GB
creating volume 2a22fa5a-07d3-4dbc-95d5-704645348577
Create snapshot of volume vol-00000001
deleting volume 2a22fa5a-07d3-4dbc-95d5-704645348577
0
Content-Type: text/plain;charset=utf8
stderr
AC5
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'bw_in'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'bw_out'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'last_ctr_in'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'last_ctr_out'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_reads'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_read_bytes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_writes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_write_bytes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_reads'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_read_bytes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_writes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_write_bytes'
default, primary_key))
/home/kaushikc/code/nova/.venv/local/lib/python2.7/site-packages/sqlalchemy/sql/expression.py:1927: SAWarning: The IN-predicate on "instances.uuid" was invoked with an empty sequence. This results in a contradiction, which nonetheless can be expensive to evaluate. Consider alternative strategies for improved performance.
return self._in_impl(operators.in_op, operators.notin_op, other)
0
Content-Type: text/plain;charset=utf8
stdout
0
]
The same problem happens while running tests with other tools like nosetests
$ nosetests
nosetests nova/tests/api/test_auth.py
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'bw_in'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'bw_out'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'last_ctr_in'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'last_ctr_out'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_reads'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_read_bytes'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_writes'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'tot_write_bytes'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_reads'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_read_bytes'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_writes'
default, primary_key))
/usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/sqlite/base.py:723: SAWarning: Did not recognize type 'BIGINT' of column 'curr_write_bytes'
default, primary_key))
..........
----------------------------------------------------------------------
Ran 10 tests in 1.493s
OK
Since the warnings are in stderr, some editor plugins (like pyunit) to run unit tests in place, are not working.
I'm fairly sure that sqla is just converting these to INT type, which in sqlite can accommodate up to 8 bytes already. I don't think the tests are adversely affected, it's just the warning gives the impression something is wrong when it isn't. This is really an issue in sqla, but it would be nice to not see those warnings all the time.