From eb7bdab66ca07e0480fb158dc8510c461c8149f3 Mon Sep 17 00:00:00 2001 From: wangjingyuan8 <1577039175@qq.com> Date: Mon, 21 Jul 2025 19:47:21 +0800 Subject: [PATCH] =?UTF-8?q?PQ=E5=A2=9E=E5=8A=A0=E7=A0=81=E6=9C=AC=E8=AE=AD?= =?UTF-8?q?=E7=BB=83=E6=97=A5=E5=BF=97=E6=89=93=E5=8D=B0=E5=92=8C=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=80=BC=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../storage/access/datavec/hnswbuild.cpp | 14 +++++++++++--- .../storage/access/datavec/ivfbuild.cpp | 13 ++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/gausskernel/storage/access/datavec/hnswbuild.cpp b/src/gausskernel/storage/access/datavec/hnswbuild.cpp index 6aefdd99f..5ebb8507e 100644 --- a/src/gausskernel/storage/access/datavec/hnswbuild.cpp +++ b/src/gausskernel/storage/access/datavec/hnswbuild.cpp @@ -145,16 +145,17 @@ PQParams *InitPQParamsInMemory(HnswBuildState *buildstate) return params; } -static void ComputeHnswPQ(HnswBuildState *buildstate) +static int ComputeHnswPQ(HnswBuildState *buildstate) { MemoryContext pqCtx = AllocSetContextCreate(CurrentMemoryContext, "Hnsw PQ temporary context", ALLOCSET_DEFAULT_SIZES); MemoryContext oldCtx = MemoryContextSwitchTo(pqCtx); - ComputePQTable(buildstate->samples, buildstate->params); + int res = ComputePQTable(buildstate->samples, buildstate->params); MemoryContextSwitchTo(oldCtx); MemoryContextDelete(pqCtx); + return res; } BlockNumber BlockSamplerGetBlock(BlockSampler bs) @@ -417,6 +418,7 @@ static void BuildPQtable(HnswBuildState *buildstate) PG_TRY(); { /* Sample rows */ + ereport(LOG, (errmsg("HNSWPQ start sample rows."))); buildstate->samples = VectorArrayInit(numSamples, buildstate->dimensions, buildstate->typeInfo->itemSize(buildstate->dimensions)); } @@ -435,8 +437,14 @@ static void BuildPQtable(HnswBuildState *buildstate) errhint("Drop the index until the table has more data."))); } } - ComputeHnswPQ(buildstate); + ereport(LOG, (errmsg("HNSWPQ start to train codebook."))); + int success = ComputeHnswPQ(buildstate); VectorArrayFree(buildstate->samples); + if (success == -1) { + ereport(ERROR, (errmsg("HNSWPQ training codebook is failed."))); + } else { + ereport(LOG, (errmsg("HNSWPQ finish to train codebook."))); + } } diff --git a/src/gausskernel/storage/access/datavec/ivfbuild.cpp b/src/gausskernel/storage/access/datavec/ivfbuild.cpp index 67d3e57be..30029efbb 100644 --- a/src/gausskernel/storage/access/datavec/ivfbuild.cpp +++ b/src/gausskernel/storage/access/datavec/ivfbuild.cpp @@ -156,16 +156,17 @@ static void ComputePreTable(IvfflatBuildState *buildstate) /* * Compute PQTable */ -static void ComputeIvfPQ(IvfflatBuildState *buildstate) +static int ComputeIvfPQ(IvfflatBuildState *buildstate) { MemoryContext pqCtx = AllocSetContextCreate(CurrentMemoryContext, "Ivfflat PQ temporary context", ALLOCSET_DEFAULT_SIZES); MemoryContext oldCtx = MemoryContextSwitchTo(pqCtx); - IvfComputePQTable(buildstate->residuals, buildstate->params); + int res = IvfComputePQTable(buildstate->residuals, buildstate->params); MemoryContextSwitchTo(oldCtx); MemoryContextDelete(pqCtx); + return res; } /* @@ -1120,7 +1121,13 @@ static void CreateEntryPages(IvfflatBuildState *buildstate, ForkNumber forkNum) /* Build PQTable by residusal */ if (buildstate->enablePQ) { CopyResidaulFromList(buildstate); - ComputeIvfPQ(buildstate); + ereport(LOG, (errmsg("IVFPQ start to train codebook."))); + int success = ComputeIvfPQ(buildstate); + if (success == -1) { + ereport(ERROR, (errmsg("IVFPQ training codebook is failed."))); + } else { + ereport(LOG, (errmsg("IVFPQ finish to train codebook."))); + } if (buildstate->byResidual && (buildstate->params->funcType == IVF_PQ_DIS_L2 || buildstate->params->funcType == IVF_PQ_DIS_COSINE)) ComputePreTable(buildstate);