**Is your feature request related to a problem? Please describe.**
The ANALYZE statement currently (Dec2023 release) cannot be used in the body of a procedure or function or trigger.

In sql/server/sql_parser.y the `ANALYZE` statement is not included in definition of `procedure_statement:` or `trigger_procedure_statement:`. It is only included in the `sql:` definition.
Hence the parser does not recognise or allow the ANALYZE statement as part of the procedure_statement or trigger_procedure_statement.

**To ReProduce**
```
CREATE SCHEMA test;
CREATE TABLE test.numbers (num bigint NOT NULL);
ANALYZE test.numbers;  -- this works

-- try to use the ANALYZE statement in a procedure:
CREATE PROCEDURE test.update_stats1 () ANALYZE test.numbers;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats1 () analyze test"

CREATE PROCEDURE test.update_stats2 () BEGIN ANALYZE test.numbers; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats2 () begin analyze test"

CREATE PROCEDURE test.update_stats3 () BEGIN ATOMIC ANALYZE test.numbers; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats3 () begin atomic analyze test"

CREATE PROCEDURE test.refresh_numbers1 (amount bigint)
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   ANALYZE test.numbers;
END;
-- this fails: syntax error, unexpected end of file, expecting WHILE in: "create procedure test.refresh_numbers1 (amount bigint)


-- try to use the ANALYZE statement in a function:
CREATE FUNCTION test.update_stats7 () RETURNS int BEGIN ANALYZE test.numbers; RETURN 7; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create function test.update_stats7 () begin analyze test"

CREATE FUNCTION test.update_stats8 () RETURNS int BEGIN ATOMIC ANALYZE test.numbers; RETURN 8; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create function test.update_stats8 () begin atomic analyze test"

CREATE FUNCTION test.refresh_numbers2 (amount bigint) RETURNS int
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   ANALYZE test.numbers;
   RETURN amount;
END;
-- this fails: syntax error, unexpected end of file, expecting WHILE in: "create function test.refresh_numbers2 (amount bigint)

```

**Describe the solution you'd like**
It should be allowed to call `ANALYZE` statement in the body of a procedure or function or trigger.
This is useful after a large data reload to update column data statistics.

**Describe alternatives you've considered**
It appears there are 4 sys."analyze"(...) procedures:
```
 procedure sys."analyze"();
 procedure sys."analyze"("sname");
 procedure sys."analyze"("sname", "tname");
 procedure sys."analyze"("sname", "tname", "cname");
```
So any of those could be called instead of the `ANALYZE` statement.
For example:
```
CREATE PROCEDURE test.refresh_numbers1b (amount bigint)
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   CALL sys."analyze"('test', 'numbers');
END;

CREATE FUNCTION test.refresh_numbers2b (amount bigint) RETURNS bigint
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   CALL sys."analyze"('test', 'numbers');
   RETURN amount;
END;
```
request: ANALYZE statement should be allowed to be used in the body of a procedure or function or trigger.
This is a GitHub Issue
repo:MonetDB
owner:MonetDB
Title : request: ANALYZE statement should be allowed to be used in the body of a procedure or function or trigger.
Issue date:

--- start body ---
**Is your feature request related to a problem? Please describe.**
The ANALYZE statement currently (Dec2023 release) cannot be used in the body of a procedure or function or trigger.

In sql/server/sql_parser.y the `ANALYZE` statement is not included in definition of `procedure_statement:` or `trigger_procedure_statement:`. It is only included in the `sql:` definition.
Hence the parser does not recognise or allow the ANALYZE statement as part of the procedure_statement or trigger_procedure_statement.

**To ReProduce**
```
CREATE SCHEMA test;
CREATE TABLE test.numbers (num bigint NOT NULL);
ANALYZE test.numbers;  -- this works

-- try to use the ANALYZE statement in a procedure:
CREATE PROCEDURE test.update_stats1 () ANALYZE test.numbers;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats1 () analyze test"

CREATE PROCEDURE test.update_stats2 () BEGIN ANALYZE test.numbers; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats2 () begin analyze test"

CREATE PROCEDURE test.update_stats3 () BEGIN ATOMIC ANALYZE test.numbers; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create procedure test.update_stats3 () begin atomic analyze test"

CREATE PROCEDURE test.refresh_numbers1 (amount bigint)
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   ANALYZE test.numbers;
END;
-- this fails: syntax error, unexpected end of file, expecting WHILE in: "create procedure test.refresh_numbers1 (amount bigint)


-- try to use the ANALYZE statement in a function:
CREATE FUNCTION test.update_stats7 () RETURNS int BEGIN ANALYZE test.numbers; RETURN 7; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create function test.update_stats7 () begin analyze test"

CREATE FUNCTION test.update_stats8 () RETURNS int BEGIN ATOMIC ANALYZE test.numbers; RETURN 8; END;
-- this fails: syntax error, unexpected IDENT, expecting ':' in: "create function test.update_stats8 () begin atomic analyze test"

CREATE FUNCTION test.refresh_numbers2 (amount bigint) RETURNS int
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   ANALYZE test.numbers;
   RETURN amount;
END;
-- this fails: syntax error, unexpected end of file, expecting WHILE in: "create function test.refresh_numbers2 (amount bigint)

```

**Describe the solution you'd like**
It should be allowed to call `ANALYZE` statement in the body of a procedure or function or trigger.
This is useful after a large data reload to update column data statistics.

**Describe alternatives you've considered**
It appears there are 4 sys."analyze"(...) procedures:
```
 procedure sys."analyze"();
 procedure sys."analyze"("sname");
 procedure sys."analyze"("sname", "tname");
 procedure sys."analyze"("sname", "tname", "cname");
```
So any of those could be called instead of the `ANALYZE` statement.
For example:
```
CREATE PROCEDURE test.refresh_numbers1b (amount bigint)
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   CALL sys."analyze"('test', 'numbers');
END;

CREATE FUNCTION test.refresh_numbers2b (amount bigint) RETURNS bigint
BEGIN
   TRUNCATE TABLE test.numbers;
   INSERT INTO test.numbers(num) SELECT value from sys.generate_series(1, amount+1);
   CALL sys."analyze"('test', 'numbers');
   RETURN amount;
END;
```
--- end body ---
