Hi,

I am using Cassandra 2.1.5 in a cluster of two nodes (running CentOS) and using 
Python driver to connect to Cassandra.
My Python code snippet is show here:

#-------------------------------------------------------------------------------------------------------------------
import time, os, datetime, keyword
import uuid
from cassandra.cluster import Cluster
import os.path, sys
....
from cassandra.auth import PlainTextAuthProvider
....
       auth_provider = PlainTextAuthProvider(username, password)
       cluster = Cluster([node1,node2],auth_provider=auth_provider)
       session = cluster.connect();

        session.execute("CREATE table IF NOT EXISTS test.iau ("
                    "id uuid, "
                    "sample_id text, "
                    "PRIMARY KEY (sample_id) )");

        print " \n created the table"
        #--------

        sqlInsertSampleIdUid = "INSERT INTO test.iau (id, sample_id) VALUES 
("+str(uuid.uuid1())+",'sample123')"
        session.execute(sqlInsertSampleIdUid)
        print " \n Inserted main ids into the table"
        #-------

        colNames 
=['col1','col2','col3','col4','col5','col6','col7','col8','col9']

        for colName in colNames :

            sqlAlterStatement1 = " ALTER TABLE test.iau ADD "+colName+" text"
            print sqlAlterStatement1
            session.execute(sqlAlterStatement1)
            sqlAlterStatement1 = None

        print " Altered tables :: "
        # ----------------------------------------
        count = 0
        for colName in colNames :
            count = count +1
            sqlUpdateGeneDetection = " UPDATE test.iau SET "+colName+" = 
'"+str(count)+"' WHERE sample_id = 'sample123'"
            session.execute(sqlUpdateGeneDetection)
            sqlUpdateGeneDetection = None

        print " Updated tables :: "
        session.cluster.shutdown()
....
#-------------------------------------------------------------------------------------------------------------------

Very rarely this code works, but most of the time it fails when it reach ALTER 
statement.
FYI, I tried preparedstatement with binding in INSERT, UPDATE statements too.

The error with output is shown here:

#------
created the table

 Inserted main ids into the table
 ALTER TABLE test.iau ADD col1 text
 ALTER TABLE test.iau ADD col2 text
 ALTER TABLE test.iau ADD col3 text
 ALTER TABLE test.iau ADD col4 text
 ALTER TABLE test.iau ADD col5 text
 ALTER TABLE test.iau ADD col6 text
 ALTER TABLE test.iau ADD col7 text
 ALTER TABLE test.iau ADD col8 text
 ALTER TABLE test.iau ADD col9 text
E
======================================================================

----------------------------------------------------------------------
Traceback (most recent call last):
  File "UnitTests.py", line 313, in test_insert_data
    session.execute(sqlAlterStatement1)
  File "/usr/local/lib/python2.7/site-packages/cassandra/cluster.py", line 
1405, in execute
    result = future.result(timeout)
  File "/usr/local/lib/python2.7/site-packages/cassandra/cluster.py", line 
2976, in result
    raise self._final_exception
InvalidRequest: code=2200 [Invalid query] message="Invalid column name col9 
because it conflicts with an existing column"

----------------------------------------------------------------------
Ran 1 test in 9.856s
#------

But when I checked the table using CQL col9 is not there.

Is there' schema' refresh issue or is it bug in Cassandra 2.1.5?

Thank you.
Kind regards
Rajesh R



**************************************************************************
The information contained in the EMail and any attachments is confidential and 
intended solely and for the attention and use of the named addressee(s). It may 
not be disclosed to any other person without the express authority of Public 
Health England, or the intended recipient, or both. If you are not the intended 
recipient, you must not disclose, copy, distribute or retain this message or 
any part of it. This footnote also confirms that this EMail has been swept for 
computer viruses by Symantec.Cloud, but please re-sweep any attachments before 
opening or saving. http://www.gov.uk/PHE
**************************************************************************

Reply via email to