diff --git a/kernel/model/index.go b/kernel/model/index.go index 8d2c34957..a84325265 100644 --- a/kernel/model/index.go +++ b/kernel/model/index.go @@ -197,6 +197,10 @@ func autoIndexEmbedBlock(embedBlocks []*sql.Block) { for i, embedBlock := range embedBlocks { stmt := strings.TrimPrefix(embedBlock.Markdown, "{{") stmt = strings.TrimSuffix(stmt, "}}") + if !strings.Contains(strings.ToLower(stmt), "select") { + continue + } + queryResultBlocks := sql.SelectBlocksRawStmtNoParse(stmt, 102400) for _, block := range queryResultBlocks { embedBlock.Content += block.Content diff --git a/kernel/sql/block_query.go b/kernel/sql/block_query.go index d7eda5bfb..0d0f22c0c 100644 --- a/kernel/sql/block_query.go +++ b/kernel/sql/block_query.go @@ -468,14 +468,18 @@ func selectBlocksRawStmt(stmt string, limit int) (ret []*Block) { defer rows.Close() confLimit := !strings.Contains(strings.ToLower(stmt), " limit ") + var count, errCount int for rows.Next() { + count++ if block := scanBlockRows(rows); nil != block { ret = append(ret, block) - if confLimit && limit < len(ret) { - break - } } else { - logging.LogWarnf("raw sql query [%s] failed: %s", stmt, err) + logging.LogWarnf("raw sql query [%s] failed: %s", stmt) + errCount++ + } + + if (confLimit && limit < count) || 7 < errCount { + break } } return