Hi Anant, I just have CQL create table statement as a string I want to extract all the parts like, tableName, KeySpaceName, regular Columns, partitionKey, ClusteringKey, Clustering Order and so on. Thats really it!
Thanks! On Mon, Feb 5, 2018 at 1:50 PM, Rahul Singh <rahul.xavier.si...@gmail.com> wrote: > I think I understand what you are trying to do … but what is your goal? > What do you mean “use it for different” queries… Maybe you want to do an > event and have an event processor? Seems like you are trying to basically > by pass that pattern and parse a query and split it into several actions? > > Did you look into this unit test folder? > > https://github.com/apache/cassandra/blob/trunk/test/ > unit/org/apache/cassandra/cql3/CQLTester.java > > -- > Rahul Singh > rahul.si...@anant.us > > Anant Corporation > > On Feb 5, 2018, 4:06 PM -0500, Kant Kodali <k...@peernova.com>, wrote: > > Hi All, > > I have a need where I get a raw CQL create table statement as a String and > I need to parse the keyspace, tablename, columns and so on..so I can use it > for various queries and send it to C*. I used the example below from this > link <https://github.com/tacoo/cassandra-antlr-sample>. I get the > following error. And I thought maybe someone in this mailing list will be > more familiar with internals. > > Exception in thread "main" > org.apache.cassandra.exceptions.ConfigurationException: > Keyspace test_keyspace doesn't exist > at org.apache.cassandra.cql3.statements.CreateTableStatement$Ra > wStatement.prepare(CreateTableStatement.java:200) > at com.hello.world.Test.main(Test.java:23) > > > Here is my code. > > package com.hello.world; > > import org.antlr.runtime.ANTLRStringStream; > import org.antlr.runtime.CommonTokenStream; > import org.apache.cassandra.cql3.CqlLexer; > import org.apache.cassandra.cql3.CqlParser; > import org.apache.cassandra.cql3.statements.CreateTableStatement; > import org.apache.cassandra.cql3.statements.ParsedStatement; > > public class Test { > > public static void main(String[] args) throws Exception { > String stmt = "create table if not exists test_keyspace.my_table > (field1 text, field2 int, field3 set<ascii>, field4 map<ascii, text>, primary > key (field1) );"; > ANTLRStringStream stringStream = new ANTLRStringStream(stmt); > CqlLexer cqlLexer = new CqlLexer(stringStream); > CommonTokenStream token = new CommonTokenStream(cqlLexer); > CqlParser parser = new CqlParser(token); > ParsedStatement query = parser.query(); > if (query.getClass().getDeclaringClass() == > CreateTableStatement.class) { > CreateTableStatement.RawStatement cts = > (CreateTableStatement.RawStatement) query; > System.out.println(cts.keyspace()); > System.out.println(cts.columnFamily()); > ParsedStatement.Prepared prepared = cts.prepare(); > CreateTableStatement cts2 = (CreateTableStatement) > prepared.statement; > cts2.getCFMetaData() > .getColumnMetadata() > .values() > .stream() > .forEach(cd -> System.out.println(cd)); > } > } > } > > Thanks! > >