Hi Jack, sorry to keep you busy :-)
There definitely is a column named "value" in the table. And most of the time this codepath works fine, even when my CAS update fails. But in very rare cases I get a ResultSet that contains applied=false but does not contain any value column. I just ran my test again and found a empty ResultSet for the following query: delete from "Lock" where lockname=:lockname and id=:id if value=:value --> ResultSet contains only [applied]=false, but no lockname, id or value. Am I correct in my assumption that this should not be? kind regards, Christian On Fri, May 6, 2016 at 1:20 AM, Jack Krupansky <jack.krupan...@gmail.com> wrote: > "value" in that message is the name of a column that is expect to be in > your table schema - the message is simply complaining that you have no > column named "value" in that table. > The error concerns the table schema, not any actual data in either the > statement or the table. > > "metadata" is simply referring to your table schema. > > Does your table schema have a "value" column? > Does your preared statement refer to a "value" column, or are you > supplying that name when executing the prepared statement? > > The "datastax.driver.core" in the exception trace class names indicates > that the error is detected in the Java driver, not Cassandra. > > > > -- Jack Krupansky > > On Thu, May 5, 2016 at 6:45 PM, horschi <hors...@gmail.com> wrote: > >> Hi Jack, >> >> I thought that it is Cassandra that fills the value on CAS failures. So >> the question if it is to be expected to have wasApplied()==false and not >> have any value in the ResultSet should belong here. >> >> So my question for this mailing list would be: >> >> Is it correct behaviour that C* returns wasApplied()==false but not any >> value? My expectation was that there always is a value in such a case. >> >> kind regards, >> Christian >> >> >> On Wed, May 4, 2016 at 6:00 PM, Jack Krupansky <jack.krupan...@gmail.com> >> wrote: >> >>> Probably better to ask this on the Java driver user list. >>> >>> >>> -- Jack Krupansky >>> >>> On Wed, May 4, 2016 at 11:46 AM, horschi <hors...@gmail.com> wrote: >>> >>>> Hi, >>>> >>>> I am doing some testing on CAS operations and I am frequently having >>>> the issue that my resultset says wasApplied()==false, but it does not >>>> contain any value. >>>> >>>> >>>> This behaviour of course leads to the following Exception when I try to >>>> read it: >>>> >>>> Caused by: java.lang.IllegalArgumentException: value is not a column >>>> defined in this metadata >>>> at >>>> com.datastax.driver.core.ColumnDefinitions.getAllIdx(ColumnDefinitions.java:273) >>>> at >>>> com.datastax.driver.core.ColumnDefinitions.getFirstIdx(ColumnDefinitions.java:279) >>>> at >>>> com.datastax.driver.core.ArrayBackedRow.getIndexOf(ArrayBackedRow.java:68) >>>> at >>>> com.datastax.driver.core.AbstractGettableData.getBytes(AbstractGettableData.java:131) >>>> >>>> >>>> >>>> My questions now are: >>>> >>>> Is it to be expected that a failing CAS operation sometimes does this? >>>> >>>> if yes: Shouldn't there a possibility on the driver side to handle this >>>> in a better was, e.g. add a "hasColumn()" method or something to the >>>> ResultSet? >>>> >>>> if no: Is that perhaps a symptom to a greater issue in cassandra? >>>> >>>> >>>> kind regards, >>>> Christian >>>> >>>> PS: I also appreciate general feedback on the entire C* CAS topic :-) >>>> >>>> >>>> >>> >> >