@@ -2577,6 +2577,10 @@ class SchemaParserV3(SchemaParserV22):
25772577 _SELECT_AGGREGATES = "SELECT * FROM system_schema.aggregates"
25782578 _SELECT_VIEWS = "SELECT * FROM system_schema.views"
25792579
2580+ def _is_not_scylla (self ):
2581+ """Check if NOT connected to ScyllaDB by checking for shard awareness."""
2582+ return getattr (getattr (self .connection , 'features' , None ), 'shard_id' , None ) is None
2583+
25802584 _table_name_col = 'table_name'
25812585
25822586 _function_agg_arument_type_col = 'argument_types'
@@ -2627,27 +2631,44 @@ def get_table(self, keyspaces, keyspace, table):
26272631 indexes_query = QueryMessage (
26282632 query = maybe_add_timeout_to_query (self ._SELECT_INDEXES + where_clause , self .metadata_request_timeout ),
26292633 consistency_level = cl , fetch_size = fetch_size )
2630- triggers_query = QueryMessage (
2631- query = maybe_add_timeout_to_query (self ._SELECT_TRIGGERS + where_clause , self .metadata_request_timeout ),
2632- consistency_level = cl , fetch_size = fetch_size )
2634+
2635+ # ScyllaDB doesn't have triggers, skip the query
2636+ if self ._is_not_scylla ():
2637+ triggers_query = QueryMessage (
2638+ query = maybe_add_timeout_to_query (self ._SELECT_TRIGGERS + where_clause , self .metadata_request_timeout ),
2639+ consistency_level = cl , fetch_size = fetch_size )
26332640
26342641 # in protocol v4 we don't know if this event is a view or a table, so we look for both
26352642 where_clause = bind_params (" WHERE keyspace_name = %s AND view_name = %s" , (keyspace , table ), _encoder )
26362643 view_query = QueryMessage (
26372644 query = maybe_add_timeout_to_query (self ._SELECT_VIEWS + where_clause , self .metadata_request_timeout ),
26382645 consistency_level = cl , fetch_size = fetch_size )
2639- ((cf_success , cf_result ), (col_success , col_result ),
2640- (indexes_sucess , indexes_result ), (triggers_success , triggers_result ),
2641- (view_success , view_result )) = (
2642- self .connection .wait_for_responses (
2643- cf_query , col_query , indexes_query , triggers_query ,
2644- view_query , timeout = self .timeout , fail_on_error = False )
2645- )
2646+
2647+ if self ._is_not_scylla ():
2648+ ((cf_success , cf_result ), (col_success , col_result ),
2649+ (indexes_sucess , indexes_result ), (triggers_success , triggers_result ),
2650+ (view_success , view_result )) = (
2651+ self .connection .wait_for_responses (
2652+ cf_query , col_query , indexes_query , triggers_query ,
2653+ view_query , timeout = self .timeout , fail_on_error = False )
2654+ )
2655+ else :
2656+ ((cf_success , cf_result ), (col_success , col_result ),
2657+ (indexes_sucess , indexes_result ),
2658+ (view_success , view_result )) = (
2659+ self .connection .wait_for_responses (
2660+ cf_query , col_query , indexes_query ,
2661+ view_query , timeout = self .timeout , fail_on_error = False )
2662+ )
2663+
26462664 table_result = self ._handle_results (cf_success , cf_result , query_msg = cf_query )
26472665 col_result = self ._handle_results (col_success , col_result , query_msg = col_query )
26482666 if table_result :
26492667 indexes_result = self ._handle_results (indexes_sucess , indexes_result , query_msg = indexes_query )
2650- triggers_result = self ._handle_results (triggers_success , triggers_result , query_msg = triggers_query )
2668+ if self ._is_not_scylla ():
2669+ triggers_result = self ._handle_results (triggers_success , triggers_result , query_msg = triggers_query )
2670+ else :
2671+ triggers_result = None
26512672 return self ._build_table_metadata (table_result [0 ], col_result , triggers_result , indexes_result )
26522673
26532674 view_result = self ._handle_results (view_success , view_result , query_msg = view_query )
@@ -2696,9 +2717,10 @@ def _build_table_metadata(self, row, col_rows=None, trigger_rows=None, index_row
26962717
26972718 self ._build_table_columns (table_meta , col_rows , compact_static , is_dense , virtual )
26982719
2699- for trigger_row in trigger_rows :
2700- trigger_meta = self ._build_trigger_metadata (table_meta , trigger_row )
2701- table_meta .triggers [trigger_meta .name ] = trigger_meta
2720+ if self ._is_not_scylla ():
2721+ for trigger_row in trigger_rows :
2722+ trigger_meta = self ._build_trigger_metadata (table_meta , trigger_row )
2723+ table_meta .triggers [trigger_meta .name ] = trigger_meta
27022724
27032725 for index_row in index_rows :
27042726 index_meta = self ._build_index_metadata (table_meta , index_row )
@@ -2793,6 +2815,7 @@ def _build_trigger_metadata(table_metadata, row):
27932815 trigger_meta = TriggerMetadata (table_metadata , name , options )
27942816 return trigger_meta
27952817
2818+
27962819 def _query_all (self ):
27972820 cl = ConsistencyLevel .ONE
27982821 fetch_size = self .fetch_size
@@ -2809,35 +2832,51 @@ def _query_all(self):
28092832 fetch_size = fetch_size , consistency_level = cl ),
28102833 QueryMessage (query = maybe_add_timeout_to_query (self ._SELECT_AGGREGATES , self .metadata_request_timeout ),
28112834 fetch_size = fetch_size , consistency_level = cl ),
2812- QueryMessage (query = maybe_add_timeout_to_query (self ._SELECT_TRIGGERS , self .metadata_request_timeout ),
2813- fetch_size = fetch_size , consistency_level = cl ),
28142835 QueryMessage (query = maybe_add_timeout_to_query (self ._SELECT_INDEXES , self .metadata_request_timeout ),
28152836 fetch_size = fetch_size , consistency_level = cl ),
28162837 QueryMessage (query = maybe_add_timeout_to_query (self ._SELECT_VIEWS , self .metadata_request_timeout ),
28172838 fetch_size = fetch_size , consistency_level = cl ),
28182839 ]
28192840
2820- ((ks_success , ks_result ),
2821- (table_success , table_result ),
2822- (col_success , col_result ),
2823- (types_success , types_result ),
2824- (functions_success , functions_result ),
2825- (aggregates_success , aggregates_result ),
2826- (triggers_success , triggers_result ),
2827- (indexes_success , indexes_result ),
2828- (views_success , views_result )) = self .connection .wait_for_responses (
2829- * queries , timeout = self .timeout , fail_on_error = False
2830- )
2841+ # ScyllaDB doesn't have triggers, skip the query
2842+ if self ._is_not_scylla ():
2843+ queries .append (QueryMessage (query = maybe_add_timeout_to_query (self ._SELECT_TRIGGERS , self .metadata_request_timeout ),
2844+ fetch_size = fetch_size , consistency_level = cl ))
2845+
2846+ responses = self .connection .wait_for_responses (* queries , timeout = self .timeout , fail_on_error = False )
2847+
2848+ if self ._is_not_scylla ():
2849+ ((ks_success , ks_result ),
2850+ (table_success , table_result ),
2851+ (col_success , col_result ),
2852+ (types_success , types_result ),
2853+ (functions_success , functions_result ),
2854+ (aggregates_success , aggregates_result ),
2855+ (indexes_success , indexes_result ),
2856+ (views_success , views_result ),
2857+ (triggers_success , triggers_result )) = responses
2858+ else :
2859+ ((ks_success , ks_result ),
2860+ (table_success , table_result ),
2861+ (col_success , col_result ),
2862+ (types_success , types_result ),
2863+ (functions_success , functions_result ),
2864+ (aggregates_success , aggregates_result ),
2865+ (indexes_success , indexes_result ),
2866+ (views_success , views_result )) = responses
28312867
28322868 self .keyspaces_result = self ._handle_results (ks_success , ks_result , query_msg = queries [0 ])
28332869 self .tables_result = self ._handle_results (table_success , table_result , query_msg = queries [1 ])
28342870 self .columns_result = self ._handle_results (col_success , col_result , query_msg = queries [2 ])
2835- self .triggers_result = self ._handle_results (triggers_success , triggers_result , query_msg = queries [6 ])
28362871 self .types_result = self ._handle_results (types_success , types_result , query_msg = queries [3 ])
28372872 self .functions_result = self ._handle_results (functions_success , functions_result , query_msg = queries [4 ])
28382873 self .aggregates_result = self ._handle_results (aggregates_success , aggregates_result , query_msg = queries [5 ])
2839- self .indexes_result = self ._handle_results (indexes_success , indexes_result , query_msg = queries [7 ])
2840- self .views_result = self ._handle_results (views_success , views_result , query_msg = queries [8 ])
2874+ self .indexes_result = self ._handle_results (indexes_success , indexes_result , query_msg = queries [6 ])
2875+ self .views_result = self ._handle_results (views_success , views_result , query_msg = queries [7 ])
2876+ if self ._is_not_scylla ():
2877+ self .triggers_result = self ._handle_results (triggers_success , triggers_result , query_msg = queries [8 ])
2878+ else :
2879+ self .triggers_result = []
28412880
28422881 self ._aggregate_results ()
28432882
0 commit comments