55from typing import List
66
77from .cottontail_pb2 import SchemaName , CreateSchemaMessage , DropSchemaMessage , EntityName , ColumnDefinition , \
8- EntityDefinition , CreateEntityMessage , Engine , InsertMessage , ColumnName , Scan , From , Type , ListSchemaMessage , \
8+ EntityDefinition , CreateEntityMessage , InsertMessage , ColumnName , Scan , From , Type , ListSchemaMessage , \
99 ListEntityMessage , EntityDetailsMessage , DropEntityMessage , TruncateEntityMessage , OptimizeEntityMessage , \
10- IndexName , IndexDefinition , IndexType , CreateIndexMessage , DropIndexMessage , RebuildIndexMessage , UpdateMessage , \
10+ IndexName , IndexType , CreateIndexMessage , DropIndexMessage , RebuildIndexMessage , UpdateMessage , \
1111 DeleteMessage , Literal , Vector , FloatVector , BatchInsertMessage , Metadata , QueryMessage , Query
1212from .cottontail_pb2_grpc import DDLStub , DMLStub , TXNStub , DQLStub
1313
@@ -170,12 +170,10 @@ def create_index(self, schema, entity, index, index_type: IndexType, columns: Li
170170 """
171171 schema_name = SchemaName (name = schema )
172172 entity_name = EntityName (schema = schema_name , name = entity )
173- index_name = IndexName (entity = entity_name , name = index )
174173 # TODO: map<string,string> params
175- column_names = [ColumnName (entity = entity_name , name = c ) for c in columns ]
176- index_def = IndexDefinition (name = index_name , type = index_type , columns = column_names )
177174 response = self ._ddl .CreateIndex (
178- CreateIndexMessage (metadata = Metadata (transactionId = self ._tid ), definition = index_def , rebuild = rebuild ))
175+ CreateIndexMessage (metadata = Metadata (transactionId = self ._tid ), entity = entity_name , type = index_type ,
176+ indexName = index , columns = columns , rebuild = rebuild ))
179177 return self ._parse_query_response (response )
180178
181179 def drop_index (self , schema , entity , index ):
@@ -238,7 +236,8 @@ def get_entity_details(self, schema, entity):
238236 """
239237 schema_name = SchemaName (name = schema )
240238 entity_name = EntityName (schema = schema_name , name = entity )
241- response = self ._ddl .EntityDetails (EntityDetailsMessage (metadata = Metadata (transactionId = self ._tid ), entity = entity_name ))
239+ response = self ._ddl .EntityDetails (
240+ EntityDetailsMessage (metadata = Metadata (transactionId = self ._tid ), entity = entity_name ))
242241 entity_data = response .tuples [0 ]
243242 data_names = [c .name .name for c in response .columns ]
244243 name_index = data_names .index ('dbo' )
@@ -344,19 +343,22 @@ def ping(self):
344343 """Sends a ping message to the endpoint. If method returns without exception endpoint is connected."""
345344 self ._dql .Ping (Empty ())
346345
347- def query (self , schema , entity , projection , where ):
346+ def query (self , schema , entity , projection , where , order = None , limit = None , skip = None ):
348347 """
349348 Queries the specified entity where the provided conditions are met and applies the given projection.
350349
351350 @param schema: the schema containing the queried entity
352351 @param entity: the entity being queried
353352 @param projection: the projection to be applied to the result
354353 @param where: where clause specifying the rows to return
354+ @param order: order by clause specifying the order of the result
355+ @param limit: maximum number of rows to return
356+ @param skip: number of rows to skip
355357 """
356358 schema_name = SchemaName (name = schema )
357359 entity_name = EntityName (schema = schema_name , name = entity )
358360 from_kwarg = {'from' : From (scan = Scan (entity = entity_name ))}
359- query = Query (** from_kwarg , projection = projection , where = where )
361+ query = Query (** from_kwarg , projection = projection , where = where , order = order , limit = limit , skip = skip )
360362 responses = self ._dql .Query (QueryMessage (metadata = Metadata (transactionId = self ._tid ), query = query ))
361363 return [r for response in responses for r in self ._parse_query_response (response )]
362364
@@ -403,8 +405,7 @@ def _insert_helper(self, schema, entity, values):
403405 return InsertMessage (metadata = Metadata (transactionId = self ._tid ), ** from_kwarg , elements = elements )
404406
405407
406- def column_def (name : str , type_ : Type , length : int = None , primary : bool = None , nullable : bool = None ,
407- engine : Engine = Engine .MAPDB ):
408+ def column_def (name : str , type_ : Type , length : int = None , primary : bool = None , nullable : bool = None ):
408409 """
409410 Creates a column definition.
410411
@@ -413,13 +414,11 @@ def column_def(name: str, type_: Type, length: int = None, primary: bool = None,
413414 @param length: data length for vector types
414415 @param primary: if this is a primary column of the entity
415416 @param nullable: if this column may be null
416- @param engine: storage engine to use (currently only MapDB)
417417 @return: column definition
418418 """
419419 kwargs = {
420420 'name' : ColumnName (name = name ),
421- 'type' : type_ ,
422- 'engine' : engine
421+ 'type' : type_
423422 }
424423 if length is not None :
425424 kwargs ['length' ] = length
0 commit comments