Skip to content

bug: bendsql parse task with begin end will return err #648

@TCeason

Description

@TCeason

Use bendsql parse error :

root@localhost:8000/default/default> CREATE TASK IF NOT EXISTS MyTask1 SCHEDULE = 1 SECOND as
begin
    begin;
    insert into t values('1');
    delete from t ;
    vacuum table t;
    SELECT
          {

              'avg_ads_rev': case when number=0 then 0
                                  when number=0 then 0.083903
                                  else (1/number)::DECIMAL(14,6) end
          }  AS features
    FROM t
    commit;
end;
error: APIError: QueryFailed: [1005]error: 
  --> SQL:3:10
  |
1 | CREATE TASK IF NOT EXISTS MyTask1 SCHEDULE = 1 SECOND as
  | ------ while parsing `CREATE TASK [ IF NOT EXISTS ] <name>
  [ { WAREHOUSE = <string> } ]
  [ SCHEDULE = { <num> MINUTE | USING CRON <expr> <time_zone> } ]
  [ AFTER <string>, <string>...]
  [ WHEN boolean_expr ]
  [ SUSPEND_TASK_AFTER_NUM_FAILURES = <num> ]
  [ ERROR_INTEGRATION = <string_literal> ]
  [ COMMENT = '<string_literal>' ]
AS
  <sql>`
2 | begin
3 |     begin
  |          ^ unexpected end of input, expecting `;` or `TRANSACTION`

Use curl or other driver is ok.

$ curl -s -u root: -XPOST "http://localhost:8000/v1/query" -H 'Content-Type: application/json' -d "{\"sql\": \"alter TASK mt modify AS BEGIN BEGIN;SELECT {'avg_ads_rev': case when total_ads_rev=0 then 0 when total_ads_imp=0 then 0.083903 else (total_ads_rev/total_ads_imp)::DECIMAL(14,6) end }  AS features FROM production_external_ad_tracking_ingest.tmp_tracking_for_feature_total_ads_rev; COMMIT;END;\"}"

{"id":"0198167a11357e72bda1a6f4c341fd95","session_id":"","node_id":"rQ70re504MWtyw8yEaeUk6","state":"Succeeded","session":{"catalog":"default","database":"default","role":"account_admin","settings":{},"txn_state":"AutoCommit","need_sticky":false,"need_keep_alive":false,"last_server_info":{"id":"rQ70re504MWtyw8yEaeUk6","start_time":"2025-07-17T11:35:16.323+08:00"},"last_query_ids":["0198167a11357e72bda1a6f4c341fd95"]},"error":null,"warnings":[],"has_result_set":false,"schema":[],"data":[],"affect":null,"result_timeout_secs":60,"stats":{"scan_progress":{"rows":0,"bytes":0},"write_progress":{"rows":0,"bytes":0},"result_progress":{"rows":0,"bytes":0},"total_scan":{"rows":0,"bytes":0},"spill_progress":{"file_nums":0,"bytes":0},"running_time_ms":21},"stats_uri":"/v1/query/0198167a11357e72bda1a6f4c341fd95","final_uri":"/v1/query/0198167a11357e72bda1a6f4c341fd95/final","next_uri":"/v1/query/0198167a11357e72bda1a6f4c341fd95/final","kill_uri":"/v1/query/0198167a11357e72bda1a6f4c341fd95/kill"}%                                                                                                                                                                           

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions