Details
-
Technical task
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Add support for basic functionality for TYPE .. OBJECT.
Under terms of this tasks we'll implement declaration of objects with members only. Objects with methods are out of scope of this task.
This task will however include implementations of simple constructors to initialize members
var struct_a_b_t:= struct_a_b_t(1,2);
|
Example
Creating an object data type and a corresponding table type.
DROP TYPE struct_a_b_t; |
CREATE TYPE struct_a_b_t AS OBJECT |
(
|
a INT, |
b INT |
);
|
/
|
DROP TYPE table_of_struct_a_b_t; |
CREATE TYPE table_of_struct_a_b_t AS TABLE OF struct_a_b_t; |
/
|
Using the new data types:
DROP FUNCTION f1; |
CREATE FUNCTION f1 RETURN INT |
AS
|
tbl table_of_struct_a_b_t:= table_of_struct_a_b_t();
|
rec struct_a_b_t:= struct_a_b_t(10,1);
|
a INT; |
BEGIN |
tbl.extend;
|
tbl(1) := rec;
|
tbl.extend;
|
tbl(2) := struct_a_b_t(20,2);
|
SELECT SUM(a+b) INTO a FROM TABLE(tbl); |
RETURN a; |
END; |
/
|
SELECT f1() FROM DUAL; |
F1()
|
----------
|
33
|
Dropping the data types:
DROP TYPE table_of_struct_a_b_t; |
DROP TYPE struct_a_b_t; |
Attachments
Issue Links
- is blocked by
-
MDEV-4912 Data type plugin API version 1
-
- Closed
-
-
MDEV-10914 ROW data type for stored routine variables
-
- Closed
-
- relates to
-
MDEV-10592 sql_mode=ORACLE: TYPE .. TABLE OF for scalar data types
-
- Open
-
Activity
Field | Original Value | New Value |
---|---|---|
Description |
Add support for basic functionality for {{TYPE .. OBJECT}}.
Under terms of this tasks we'll implement declaration of objects with members only. Objects with methods are out of scope of this task. h2. Example Creating an object data type and a corresponding table type. {code:sql} DROP TYPE struct_a_b_t; CREATE TYPE struct_a_b_t AS OBJECT ( a INT, b INT ); / DROP TYPE table_of_struct_a_b_t; CREATE TYPE table_of_struct_a_b_t AS TABLE OF struct_a_b_t; / {code} Using the new data types: {code:sql} DROP FUNCTION f1; CREATE FUNCTION f1 RETURN INT AS tbl table_of_struct_a_b_t:= table_of_struct_a_b_t(); rec struct_a_b_t:= struct_a_b_t(10,1); a INT; BEGIN tbl.extend; tbl(1) := rec; tbl.extend; tbl(2) := struct_a_b_t(20,2); SELECT SUM(a+b) INTO a FROM TABLE(tbl); RETURN a; END; / SELECT f1() FROM DUAL; {code} {noformat} F1() ---------- 33 {noformat} Dropping the data types: {code:sql} DROP TYPE table_of_struct_a_b_t; DROP TYPE struct_a_b_t; {code} |
Add support for basic functionality for {{TYPE .. OBJECT}}.
Under terms of this tasks we'll implement declaration of objects with members only. Objects with methods are out of scope of this task. This task will however include simple constructors to initialize members {code:sql} var struct_a_b_t:= struct_a_b_t(1,2); {code} h2. Example Creating an object data type and a corresponding table type. {code:sql} DROP TYPE struct_a_b_t; CREATE TYPE struct_a_b_t AS OBJECT ( a INT, b INT ); / DROP TYPE table_of_struct_a_b_t; CREATE TYPE table_of_struct_a_b_t AS TABLE OF struct_a_b_t; / {code} Using the new data types: {code:sql} DROP FUNCTION f1; CREATE FUNCTION f1 RETURN INT AS tbl table_of_struct_a_b_t:= table_of_struct_a_b_t(); rec struct_a_b_t:= struct_a_b_t(10,1); a INT; BEGIN tbl.extend; tbl(1) := rec; tbl.extend; tbl(2) := struct_a_b_t(20,2); SELECT SUM(a+b) INTO a FROM TABLE(tbl); RETURN a; END; / SELECT f1() FROM DUAL; {code} {noformat} F1() ---------- 33 {noformat} Dropping the data types: {code:sql} DROP TYPE table_of_struct_a_b_t; DROP TYPE struct_a_b_t; {code} |
Description |
Add support for basic functionality for {{TYPE .. OBJECT}}.
Under terms of this tasks we'll implement declaration of objects with members only. Objects with methods are out of scope of this task. This task will however include simple constructors to initialize members {code:sql} var struct_a_b_t:= struct_a_b_t(1,2); {code} h2. Example Creating an object data type and a corresponding table type. {code:sql} DROP TYPE struct_a_b_t; CREATE TYPE struct_a_b_t AS OBJECT ( a INT, b INT ); / DROP TYPE table_of_struct_a_b_t; CREATE TYPE table_of_struct_a_b_t AS TABLE OF struct_a_b_t; / {code} Using the new data types: {code:sql} DROP FUNCTION f1; CREATE FUNCTION f1 RETURN INT AS tbl table_of_struct_a_b_t:= table_of_struct_a_b_t(); rec struct_a_b_t:= struct_a_b_t(10,1); a INT; BEGIN tbl.extend; tbl(1) := rec; tbl.extend; tbl(2) := struct_a_b_t(20,2); SELECT SUM(a+b) INTO a FROM TABLE(tbl); RETURN a; END; / SELECT f1() FROM DUAL; {code} {noformat} F1() ---------- 33 {noformat} Dropping the data types: {code:sql} DROP TYPE table_of_struct_a_b_t; DROP TYPE struct_a_b_t; {code} |
Add support for basic functionality for {{TYPE .. OBJECT}}.
Under terms of this tasks we'll implement declaration of objects with members only. Objects with methods are out of scope of this task. This task will however include implementations of simple constructors to initialize members {code:sql} var struct_a_b_t:= struct_a_b_t(1,2); {code} h2. Example Creating an object data type and a corresponding table type. {code:sql} DROP TYPE struct_a_b_t; CREATE TYPE struct_a_b_t AS OBJECT ( a INT, b INT ); / DROP TYPE table_of_struct_a_b_t; CREATE TYPE table_of_struct_a_b_t AS TABLE OF struct_a_b_t; / {code} Using the new data types: {code:sql} DROP FUNCTION f1; CREATE FUNCTION f1 RETURN INT AS tbl table_of_struct_a_b_t:= table_of_struct_a_b_t(); rec struct_a_b_t:= struct_a_b_t(10,1); a INT; BEGIN tbl.extend; tbl(1) := rec; tbl.extend; tbl(2) := struct_a_b_t(20,2); SELECT SUM(a+b) INTO a FROM TABLE(tbl); RETURN a; END; / SELECT f1() FROM DUAL; {code} {noformat} F1() ---------- 33 {noformat} Dropping the data types: {code:sql} DROP TYPE table_of_struct_a_b_t; DROP TYPE struct_a_b_t; {code} |
Link | This issue is part of MDEV-10137 [ MDEV-10137 ] |
Link |
This issue is part of |
Link | This issue is part of MDEV-10137 [ MDEV-10137 ] |
Parent |
|
|
Issue Type | Task [ 3 ] | Technical task [ 7 ] |
Link |
This issue is part of |
Labels | Compatibility |
Labels | Compatibility |
Labels | Compatibility |
Labels | Compatibility |
Labels | Compatibility |
Link |
This issue is blocked by |
Labels | Compatibility | Compatibility NRE-307517 |
NRE Projects | NRE-307517 |
Labels | Compatibility NRE-307517 | Compatibility |
Link | This issue relates to MDEV-10592 [ MDEV-10592 ] |
Fix Version/s | 10.3 [ 22126 ] | |
Fix Version/s | 10.2 [ 14601 ] |
Parent |
|
MDEV-10764 [ 57940 ] |
Fix Version/s | 10.3 [ 22126 ] |
Support case ID | not-26307 |
NRE Projects | AC-2610/DEFERRED |
Support case ID | 26767 not-26307 | not-26307 not-26767 |
Workflow | MariaDB v3 [ 76699 ] | MariaDB v4 [ 140043 ] |
Zendesk Related Tickets | 128135 |
Should probably be 10.3