From 695a7400a907701dfc5dbd2d07b8e1657a7e25c2 Mon Sep 17 00:00:00 2001 From: huangzhuo1949 <167434202+huangzhuo1949@users.noreply.github.com> Date: Mon, 17 Mar 2025 10:53:26 +0800 Subject: [PATCH] fix:delete empty table bug (#15517) Co-authored-by: huangzhuo --- api/core/rag/datasource/vdb/pgvector/pgvector.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/api/core/rag/datasource/vdb/pgvector/pgvector.py b/api/core/rag/datasource/vdb/pgvector/pgvector.py index 06083af9ca..13c214bfd7 100644 --- a/api/core/rag/datasource/vdb/pgvector/pgvector.py +++ b/api/core/rag/datasource/vdb/pgvector/pgvector.py @@ -1,8 +1,10 @@ import json +import logging import uuid from contextlib import contextmanager from typing import Any +import psycopg2.errors import psycopg2.extras # type: ignore import psycopg2.pool # type: ignore from pydantic import BaseModel, model_validator @@ -147,7 +149,14 @@ class PGVector(BaseVector): if not ids: return with self._get_cursor() as cur: - cur.execute(f"DELETE FROM {self.table_name} WHERE id IN %s", (tuple(ids),)) + try: + cur.execute(f"DELETE FROM {self.table_name} WHERE id IN %s", (tuple(ids),)) + except psycopg2.errors.UndefinedTable: + # table not exists + logging.warning(f"Table {self.table_name} not found, skipping delete operation.") + return + except Exception as e: + raise e def delete_by_metadata_field(self, key: str, value: str) -> None: with self._get_cursor() as cur: