[ 
https://issues.apache.org/jira/browse/CASSANDRA-8638?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14289940#comment-14289940
 ] 

Abhishek Gupta commented on CASSANDRA-8638:
-------------------------------------------

As an alternate solution, here is what I propose to do as opposed to using a 
replace:
1. check the first 4 bytes and see if contains a BOM
2. if it contains a BOM, i will lookup the bom marker and further get the 
encoding and bom size(from a static dictionary)
3. open the file in the encoding returned in step-2
4. move file pointer ahead by bom size(based on bom size returned in step-2)
5. everything else will remain same

> CQLSH -f option should ignore BOM in files
> ------------------------------------------
>
>                 Key: CASSANDRA-8638
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8638
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>         Environment: Red Hat linux
>            Reporter: Sotirios Delimanolis
>            Priority: Trivial
>              Labels: cqlsh, lhf
>             Fix For: 2.1.3
>
>         Attachments: 0001-bug-CASSANDRA-8638.patch
>
>
> I fell in byte order mark trap trying to execute a CQL script through CQLSH. 
> The file contained the simple (plus BOM)
> {noformat}
> CREATE KEYSPACE IF NOT EXISTS xobni WITH replication = {'class': 
> 'SimpleStrategy', 'replication_factor': '3'}  AND durable_writes = true; 
> -- and another "CREATE TABLE bucket_flags" query
> {noformat}
> I executed the script
> {noformat}
> [~]$ cqlsh --file /home/selimanolis/Schema/patches/setup.cql 
> /home/selimanolis/Schema/patches/setup.cql:2:Invalid syntax at char 1
> /home/selimanolis/Schema/patches/setup.cql:2:  CREATE KEYSPACE IF NOT EXISTS 
> test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 
> '3'}  AND durable_writes = true; 
> /home/selimanolis/Schema/patches/setup.cql:2:  ^
> /home/selimanolis/Schema/patches/setup.cql:22:ConfigurationException: 
> <ErrorMessage code=2300 [Query invalid because of configuration issue] 
> message="Cannot add column family 'bucket_flags' to non existing keyspace 
> 'test'.">
> {noformat}
> I realized much later that the file had a BOM which was seemingly screwing 
> with how CQLSH parsed the file.
> It would be nice to have CQLSH ignore the BOM when processing files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to