Skip to content

Commit 80686d0

Browse files
committed
adding drop knowledge base index query
1 parent 561a9bc commit 80686d0

File tree

3 files changed

+41
-4
lines changed

3 files changed

+41
-4
lines changed

mindsdb_sql_parser/ast/mindsdb/knowledge_base.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,24 @@ def to_tree(self, *args, level=0, **kwargs):
126126
def get_string(self, *args, **kwargs):
127127
out_str = f'CREATE INDEX ON KNOWLEDGE_BASE {self.name.to_string()}'
128128
return out_str
129+
130+
class DropKnowledgeBaseIndex(ASTNode):
131+
"""
132+
Delete an index in the knowledge base
133+
"""
134+
def __init__(self, name, *args, **kwargs):
135+
"""
136+
Args:
137+
name: Identifier -- name of the knowledge base
138+
"""
139+
super().__init__(*args, **kwargs)
140+
self.name = name
141+
142+
def to_tree(self, *args, level=0, **kwargs):
143+
ind = indent(level)
144+
out_str = f"{ind}DropKnowledgeBaseIndex(name={self.name.to_string()})"
145+
return out_str
146+
147+
def get_string(self, *args, **kwargs):
148+
out_str = f'DROP INDEX ON KNOWLEDGE_BASE {self.name.to_string()}'
149+
return out_str

mindsdb_sql_parser/parser.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from mindsdb_sql_parser.ast.mindsdb.latest import Latest
1818
from mindsdb_sql_parser.ast.mindsdb.evaluate import Evaluate
1919
from mindsdb_sql_parser.ast.mindsdb.knowledge_base import CreateKnowledgeBase, DropKnowledgeBase, \
20-
CreateKnowledgeBaseIndex
20+
CreateKnowledgeBaseIndex, DropKnowledgeBaseIndex
2121
from mindsdb_sql_parser.ast.mindsdb.skills import CreateSkill, DropSkill, UpdateSkill
2222
from mindsdb_sql_parser.exceptions import ParsingException
2323
from mindsdb_sql_parser.ast.mindsdb.retrain_predictor import RetrainPredictor
@@ -95,7 +95,8 @@ class MindsDBParser(Parser):
9595
'create_agent',
9696
'drop_agent',
9797
'update_agent',
98-
'create_index'
98+
'create_index',
99+
'drop_index',
99100
)
100101
def query(self, p):
101102
return p[0]
@@ -136,10 +137,14 @@ def create_kb(self, p):
136137
if_not_exists=if_not_exists
137138
)
138139

139-
@_("CREATE INDEX ON KNOWLEDGE_BASE identifier")
140+
@_('CREATE INDEX ON KNOWLEDGE_BASE identifier')
140141
def create_index(self, p):
141142
return CreateKnowledgeBaseIndex(name=p.identifier)
142143

144+
@_('DROP INDEX ON KNOWLEDGE_BASE identifier')
145+
def drop_index(self, p):
146+
return DropKnowledgeBaseIndex(name=p.identifier)
147+
143148
@_('DROP KNOWLEDGE_BASE if_exists_or_empty identifier')
144149
def drop_kb(self, p):
145150
return DropKnowledgeBase(name=p.identifier, if_exists=p.if_exists_or_empty)

tests/test_mindsdb/test_knowledgebase_index.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mindsdb_sql_parser import parse_sql
2-
from mindsdb_sql_parser.ast.mindsdb.knowledge_base import CreateKnowledgeBaseIndex
2+
from mindsdb_sql_parser.ast.mindsdb.knowledge_base import CreateKnowledgeBaseIndex, DropKnowledgeBaseIndex
33
from mindsdb_sql_parser.ast import *
44

55
class TestKB:
@@ -16,3 +16,14 @@ def test_create_knowledge_base_index(self):
1616
assert str(ast).lower() == sql.lower()
1717
assert ast.to_tree() == expected_ast.to_tree()
1818

19+
def test_drop_knowledge_base_index(self):
20+
# create without select
21+
22+
sql = """DROP INDEX ON KNOWLEDGE_BASE my_kb"""
23+
ast = parse_sql(sql)
24+
print(ast)
25+
expected_ast = DropKnowledgeBaseIndex(
26+
name=Identifier('my_kb'),
27+
)
28+
assert ast.to_tree() == expected_ast.to_tree()
29+

0 commit comments

Comments
 (0)