Changeset: a86d77dcdbb6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a86d77dcdbb6
Modified Files:
clients/mapiclient/dump.c
sql/server/sql_parser.y
Branch: nested
Log Message:
Dump SETOF.
diffs (159 lines):
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -870,72 +870,74 @@ dump_type(Mapi mid, stream *sqlf, const
{
int space = 0;
+ if (c_multiset == 1)
+ space += mnstr_printf(sqlf, "SETOF ");
if (strcmp(c_type, "boolean") == 0) {
- space = mnstr_printf(sqlf, "BOOLEAN");
+ space += mnstr_printf(sqlf, "BOOLEAN");
} else if (strcmp(c_type, "int") == 0) {
- space = mnstr_printf(sqlf, "INTEGER");
+ space += mnstr_printf(sqlf, "INTEGER");
} else if (strcmp(c_type, "smallint") == 0) {
- space = mnstr_printf(sqlf, "SMALLINT");
+ space += mnstr_printf(sqlf, "SMALLINT");
} else if (strcmp(c_type, "tinyint") == 0) {
- space = mnstr_printf(sqlf, "TINYINT");
+ space += mnstr_printf(sqlf, "TINYINT");
} else if (strcmp(c_type, "bigint") == 0) {
- space = mnstr_printf(sqlf, "BIGINT");
+ space += mnstr_printf(sqlf, "BIGINT");
} else if (strcmp(c_type, "hugeint") == 0) {
- space = mnstr_printf(sqlf, "HUGEINT");
+ space += mnstr_printf(sqlf, "HUGEINT");
} else if (strcmp(c_type, "date") == 0) {
- space = mnstr_printf(sqlf, "DATE");
+ space += mnstr_printf(sqlf, "DATE");
} else if (strcmp(c_type, "month_interval") == 0) {
if (strcmp(c_type_digits, "1") == 0)
- space = mnstr_printf(sqlf, "INTERVAL YEAR");
+ space += mnstr_printf(sqlf, "INTERVAL YEAR");
else if (strcmp(c_type_digits, "2") == 0)
- space = mnstr_printf(sqlf, "INTERVAL YEAR TO MONTH");
+ space += mnstr_printf(sqlf, "INTERVAL YEAR TO MONTH");
else if (strcmp(c_type_digits, "3") == 0)
- space = mnstr_printf(sqlf, "INTERVAL MONTH");
+ space += mnstr_printf(sqlf, "INTERVAL MONTH");
else
fprintf(stderr, "Internal error: unrecognized month
interval %s\n", c_type_digits);
} else if (strcmp(c_type, "day_interval") == 0 || strcmp(c_type,
"sec_interval") == 0) {
if (strcmp(c_type_digits, "4") == 0)
- space = mnstr_printf(sqlf, "INTERVAL DAY");
+ space += mnstr_printf(sqlf, "INTERVAL DAY");
else if (strcmp(c_type_digits, "5") == 0)
- space = mnstr_printf(sqlf, "INTERVAL DAY TO HOUR");
+ space += mnstr_printf(sqlf, "INTERVAL DAY TO HOUR");
else if (strcmp(c_type_digits, "6") == 0)
- space = mnstr_printf(sqlf, "INTERVAL DAY TO MINUTE");
+ space += mnstr_printf(sqlf, "INTERVAL DAY TO MINUTE");
else if (strcmp(c_type_digits, "7") == 0)
- space = mnstr_printf(sqlf, "INTERVAL DAY TO SECOND");
+ space += mnstr_printf(sqlf, "INTERVAL DAY TO SECOND");
else if (strcmp(c_type_digits, "8") == 0)
- space = mnstr_printf(sqlf, "INTERVAL HOUR");
+ space += mnstr_printf(sqlf, "INTERVAL HOUR");
else if (strcmp(c_type_digits, "9") == 0)
- space = mnstr_printf(sqlf, "INTERVAL HOUR TO MINUTE");
+ space += mnstr_printf(sqlf, "INTERVAL HOUR TO MINUTE");
else if (strcmp(c_type_digits, "10") == 0)
- space = mnstr_printf(sqlf, "INTERVAL HOUR TO SECOND");
+ space += mnstr_printf(sqlf, "INTERVAL HOUR TO SECOND");
else if (strcmp(c_type_digits, "11") == 0)
- space = mnstr_printf(sqlf, "INTERVAL MINUTE");
+ space += mnstr_printf(sqlf, "INTERVAL MINUTE");
else if (strcmp(c_type_digits, "12") == 0)
- space = mnstr_printf(sqlf, "INTERVAL MINUTE TO SECOND");
+ space += mnstr_printf(sqlf, "INTERVAL MINUTE TO
SECOND");
else if (strcmp(c_type_digits, "13") == 0)
- space = mnstr_printf(sqlf, "INTERVAL SECOND");
+ space += mnstr_printf(sqlf, "INTERVAL SECOND");
else
fprintf(stderr, "Internal error: unrecognized second
interval %s\n", c_type_digits);
} else if (strcmp(c_type, "clob") == 0 ||
(strcmp(c_type, "varchar") == 0 &&
strcmp(c_type_digits, "0") == 0)) {
- space = mnstr_printf(sqlf, "CHARACTER LARGE OBJECT");
+ space += mnstr_printf(sqlf, "CHARACTER LARGE OBJECT");
if (strcmp(c_type_digits, "0") != 0)
space += mnstr_printf(sqlf, "(%s)", c_type_digits);
} else if (strcmp(c_type, "blob") == 0) {
- space = mnstr_printf(sqlf, "BINARY LARGE OBJECT");
+ space += mnstr_printf(sqlf, "BINARY LARGE OBJECT");
if (strcmp(c_type_digits, "0") != 0)
space += mnstr_printf(sqlf, "(%s)", c_type_digits);
} else if (strcmp(c_type, "timestamp") == 0 ||
strcmp(c_type, "timestamptz") == 0) {
- space = mnstr_printf(sqlf, "TIMESTAMP");
+ space += mnstr_printf(sqlf, "TIMESTAMP");
if (strcmp(c_type_digits, "7") != 0)
space += mnstr_printf(sqlf, "(%d)", atoi(c_type_digits)
- 1);
if (strcmp(c_type, "timestamptz") == 0)
space += mnstr_printf(sqlf, " WITH TIME ZONE");
} else if (strcmp(c_type, "time") == 0 ||
strcmp(c_type, "timetz") == 0) {
- space = mnstr_printf(sqlf, "TIME");
+ space += mnstr_printf(sqlf, "TIME");
if (strcmp(c_type_digits, "1") != 0)
space += mnstr_printf(sqlf, "(%d)", atoi(c_type_digits)
- 1);
if (strcmp(c_type, "timetz") == 0)
@@ -943,25 +945,25 @@ dump_type(Mapi mid, stream *sqlf, const
} else if (strcmp(c_type, "real") == 0) {
if (strcmp(c_type_digits, "24") == 0 &&
strcmp(c_type_scale, "0") == 0)
- space = mnstr_printf(sqlf, "REAL");
+ space += mnstr_printf(sqlf, "REAL");
else if (strcmp(c_type_scale, "0") == 0)
- space = mnstr_printf(sqlf, "FLOAT(%s)", c_type_digits);
+ space += mnstr_printf(sqlf, "FLOAT(%s)", c_type_digits);
else
- space = mnstr_printf(sqlf, "FLOAT(%s,%s)",
+ space += mnstr_printf(sqlf, "FLOAT(%s,%s)",
c_type_digits, c_type_scale);
} else if (strcmp(c_type, "double") == 0) {
if (strcmp(c_type_digits, "53") == 0 &&
strcmp(c_type_scale, "0") == 0)
- space = mnstr_printf(sqlf, "DOUBLE");
+ space += mnstr_printf(sqlf, "DOUBLE");
else if (strcmp(c_type_scale, "0") == 0)
- space = mnstr_printf(sqlf, "FLOAT(%s)", c_type_digits);
+ space += mnstr_printf(sqlf, "FLOAT(%s)", c_type_digits);
else
- space = mnstr_printf(sqlf, "FLOAT(%s,%s)",
+ space += mnstr_printf(sqlf, "FLOAT(%s,%s)",
c_type_digits, c_type_scale);
} else if (strcmp(c_type, "decimal") == 0 &&
strcmp(c_type_digits, "1") == 0 &&
strcmp(c_type_scale, "0") == 0) {
- space = mnstr_printf(sqlf, "DECIMAL");
+ space += mnstr_printf(sqlf, "DECIMAL");
} else if (strcmp(c_type, "table") == 0) {
mnstr_printf(sqlf, "TABLE ");
dump_column_definition(mid, sqlf, NULL, NULL, c_type_digits, 1,
hashge);
@@ -984,9 +986,9 @@ dump_type(Mapi mid, stream *sqlf, const
} else {
const char *s = toUpper(c_type);
if (s)
- space = mnstr_printf(sqlf, "%s", s);
+ space += mnstr_printf(sqlf, "%s", s);
else
- space = dquoted_print(sqlf, c_type, NULL);
+ space += dquoted_print(sqlf, c_type, NULL);
if (strcmp(c_type_digits, "0") != 0) {
if (strcmp(c_type_scale, "0") == 0) {
space += mnstr_printf(sqlf, "(%s)",
c_type_digits);
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -5967,7 +5967,7 @@ data_type:
| SETOF simple_data_type ARRAY { $$ = $2; $$.multiset
= MS_SETOF; }
;
-/* for now no multi dimential array's */
+/* for now no multi dimential arrays */
opt_array_bounds:
/*opt_array_bounds*/ '[' ']' { $$ = append_int(L(), -1); }
| /*opt_array_bounds*/ '[' posint ']' { $$ = append_int(L(), $2); }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]