@@ -139,6 +139,87 @@ public void testSymbol() {
139139 "select firstname,lastname,age from " + topicName );
140140 }
141141
142+ @ Test
143+ public void testSymbol_withAllOtherILPTypes () {
144+ connect .kafka ().createTopic (topicName , 1 );
145+ Map <String , String > props = baseConnectorProps (topicName );
146+ props .put (QuestDBSinkConnectorConfig .SYMBOL_COLUMNS_CONFIG , "firstname" );
147+ connect .configureConnector (CONNECTOR_NAME , props );
148+ assertConnectorTaskRunningEventually ();
149+ Schema schema = SchemaBuilder .struct ().name ("com.example.Person" )
150+ .field ("firstname" , Schema .STRING_SCHEMA )
151+ .field ("lastname" , Schema .STRING_SCHEMA )
152+ .field ("age" , Schema .INT8_SCHEMA )
153+ .field ("vegan" , Schema .BOOLEAN_SCHEMA )
154+ .field ("height" , Schema .FLOAT64_SCHEMA )
155+ .field ("birth" , Timestamp .SCHEMA )
156+ .build ();
157+
158+ java .util .Date birth = new Calendar .Builder ()
159+ .setTimeZone (TimeZone .getTimeZone ("UTC" ))
160+ .setDate (2022 , 9 , 23 ) // note: month is 0-based
161+ .setTimeOfDay (13 , 53 , 59 , 123 )
162+ .build ().getTime ();
163+ Struct p1 = new Struct (schema )
164+ .put ("firstname" , "John" )
165+ .put ("lastname" , "Doe" )
166+ .put ("age" , (byte ) 42 )
167+ .put ("vegan" , true )
168+ .put ("height" , 1.80 )
169+ .put ("birth" , birth );
170+
171+ birth = new Calendar .Builder ()
172+ .setTimeZone (TimeZone .getTimeZone ("UTC" ))
173+ .setDate (2021 , 9 , 23 ) // note: month is 0-based
174+ .setTimeOfDay (13 , 53 , 59 , 123 )
175+ .build ().getTime ();
176+ Struct p2 = new Struct (schema )
177+ .put ("firstname" , "Jane" )
178+ .put ("lastname" , "Doe" )
179+ .put ("age" , (byte ) 41 )
180+ .put ("vegan" , false )
181+ .put ("height" , 1.60 )
182+ .put ("birth" , birth );
183+
184+ connect .kafka ().produce (topicName , "p1" , new String (converter .fromConnectData (topicName , schema , p1 )));
185+ connect .kafka ().produce (topicName , "p2" , new String (converter .fromConnectData (topicName , schema , p2 )));
186+
187+ QuestDBUtils .assertSqlEventually (questDBContainer , "\" firstname\" ,\" lastname\" ,\" age\" ,\" vegan\" ,\" height\" ,\" birth\" \r \n "
188+ + "\" John\" ,\" Doe\" ,42,true,1.8,\" 2022-10-23T13:53:59.123000Z\" \r \n "
189+ + "\" Jane\" ,\" Doe\" ,41,false,1.6,\" 2021-10-23T13:53:59.123000Z\" \r \n " ,
190+ "select firstname,lastname,age,vegan,height,birth from " + topicName );
191+ }
192+
193+ @ Test
194+ public void testUpfrontTable_withSymbols () {
195+ connect .kafka ().createTopic (topicName , 1 );
196+ Map <String , String > props = baseConnectorProps (topicName );
197+ props .put (QuestDBSinkConnectorConfig .SYMBOL_COLUMNS_CONFIG , "firstname,lastname" );
198+ connect .configureConnector (CONNECTOR_NAME , props );
199+ assertConnectorTaskRunningEventually ();
200+ Schema schema = SchemaBuilder .struct ().name ("com.example.Person" )
201+ .field ("firstname" , Schema .STRING_SCHEMA )
202+ .field ("lastname" , Schema .STRING_SCHEMA )
203+ .field ("age" , Schema .INT8_SCHEMA )
204+ .build ();
205+
206+ Struct struct = new Struct (schema )
207+ .put ("firstname" , "John" )
208+ .put ("lastname" , "Doe" )
209+ .put ("age" , (byte ) 42 );
210+
211+ QuestDBUtils .assertSql (questDBContainer ,
212+ "{\" ddl\" :\" OK\" }\n " ,
213+ "create table " + topicName + " (firstname symbol, lastname symbol, age int)" ,
214+ QuestDBUtils .Endpoint .EXEC );
215+
216+ connect .kafka ().produce (topicName , "key" , new String (converter .fromConnectData (topicName , schema , struct )));
217+
218+ QuestDBUtils .assertSqlEventually (questDBContainer , "\" firstname\" ,\" lastname\" ,\" age\" ,\" key\" \r \n "
219+ + "\" John\" ,\" Doe\" ,42,\" key\" \r \n " ,
220+ "select * from " + topicName );
221+ }
222+
142223 @ Test
143224 public void testUpfrontTable () {
144225 connect .kafka ().createTopic (topicName , 1 );
0 commit comments