plan.Sort 是用于排序操作的计划节点,它并不返回查询结果的列。相反,它接受上一个计划节点(如 plan.Filter 或 plan.Project)的输出,并对其进行排序。因此,在使用 plan.Sort 时,需要先确定上一个计划节点输出的列。
一般来说,在 SQL 查询中,查询返回的列由 SELECT 子句中指定的列决定。例如:
SELECT col1, col2 FROM mytable;
在这个例子中,查询返回两个列:col1 和 col2。如果使用 go-mysql-server 库中的 PlanBuilder 构建 SQL 查询,则可以使用以下方式获取查询返回的列:
import (
"github.com/dolthub/go-mysql-server/sql"
"github.com/dolthub/go-mysql-server/sql/plan"
)
// ...
builder := plan.NewPlanBuilder(myDatabase)
// Build the query and get the resulting plan node.
node, err := builder.Build("SELECT col1, col2 FROM mytable")
if err != nil {
// Handle error...
}
// Get the output schema of the last node in the chain (which should be a Project node).
outputSchema := node.Schema()
在这里,我们通过 PlanBuilder 构建了一个 SELECT 查询,并获取了查询结果所需的 schema(即输出模式)。然后可以将该 schema 传递给下一个计划节点以进行进一步处理。