Aswin Karthik created CASSANDRA-18495:
-----------------------------------------

             Summary: Warnings when using the perl driver to connect to 
Cassandra
                 Key: CASSANDRA-18495
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18495
             Project: Cassandra
          Issue Type: Bug
            Reporter: Aswin Karthik


When I use the [perl driver|https://github.com/TvdW/perl-DBD-Cassandra] to 
connect to Cassandra 4.0.3 and onwards, I get the following error just for 
initialization of a connection.

The error I get is
{noformat}
`USE <keyspace>` with prepared statements is considered to be an anti-pattern 
due to ambiguity in non-qualified table names. Please consider removing 
instances of `Session#setKeyspace(<keyspace>)`, `Session#execute("USE 
<keyspace>")` and `cluster.newSession(<keyspace>)` from your code, and always 
use fully qualified table names (e.g. <keyspace>.<table>). Keyspace used: null, 
statement keyspace: null, statement id: <id> at Cassandra/Client/Connection.pm 
line 957.
{noformat}
 

This is just from initialization of the perl driver connection while choosing 
the keyspace. 
[https://github.com/TvdW/perl-DBD-Cassandra/blob/master/Cassandra-Client/lib/Cassandra/Client/Connection.pm#L562]
 before running any queries. It is emitted even if I use qualified prepared 
statement.

The same warning does not pop up in Datastax java driver initialization.

On debugging, I found that this warning does not emit for all unqualified 
prepared statements. It only emits for unqualified prepared "USE ks" statement. 
But the "USE ks" can never be qualified. So the warning is a bit vague on what 
is the recommended approach.

And from the perspective of the driver, it is setting the keyspace of the 
connection for the first time. The same warning does not happen on the datastax 
java driver and that is because it uses QUERY to set the keyspace on 
connection. (I tried to follow the same approach on the perl driver - 
https://github.com/TvdW/perl-DBD-Cassandra/pull/35 )

The warnings are not very clear on what is deprecated and what is not. Does it 
deprecate only the use of prepared statement of "USE ks"? or does it deprecate 
"USE ks" completely? And it is not being emitted for other unqualified prepared 
statements but only for a USE statement which cannot be qualified at all.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to