更新时间:2024-06-29 GMT+08:00
分享

EXECUTE DIRECT

功能描述

在指定的节点上执行SQL语句。一般情况下,SQL语句的执行是由集群负载自动分配到合适的节点上,execute direct主要用于数据库维护和测试。

注意事项

  • 只有系统管理员才能执行EXECUTE DIRECT。
  • 为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。
  • 使用此类型语句在指定的DN执行AVG聚集计算时,返回结果集是以数组形式返回,如{4,2},表示sum结果为4,count结果为2。
  • 由于CN节点不存储用户表数据,没有必要指定CN节点执行用户表上的SELECT查询。如果查询语句中含有隐藏的远程调用开启事务逻辑,则会报错“Cannot send begin to other nodes as I'm not execute cn”。
  • 不允许执行嵌套的EXECUTE DIRECT语句,即执行的SQL语句不能同样是EXECUTE DIRECT语句,此时可直接执行最内层EXECUTE DIRECT语句代替。

语法格式

1
EXECUTE DIRECT ON ( nodename [, ... ] ) query ;

参数说明

  • nodename

    节点名称。

    取值范围:已存在的节点。

  • query

    要执行查询语句。

示例

查询节点dn_6001_6002上tpcds.customer_address记录:

1
2
CREATE TABLE IF NOT EXISTS customer_address(a int,b int);
EXECUTE DIRECT ON(dn_6001_6002) 'select count(*) from customer_address';

相关文档