Skip to content
This repository was archived by the owner on Jun 7, 2021. It is now read-only.

Commit d15b5b6

Browse files
committed
Merge [TRAFODION-2517] Allow scalar UDFs with delimited identifiers PR-987
2 parents e0128df + 928adc6 commit d15b5b6

5 files changed

Lines changed: 32 additions & 26 deletions

File tree

core/sql/parser/sqlparser.y

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8332,13 +8332,19 @@ user_defined_function_name :
83328332
regular_identifier_not_builtin
83338333
{
83348334
// Function name only.
8335-
$1->toUpper(); // UDF names can't be delimited.
8335+
$1->toUpper();
8336+
ComObjectName *name = new (PARSERHEAP())
8337+
ComObjectName(*$1, COM_UDF_NAME, 1, PARSERHEAP());
8338+
if (name == NULL) YYABORT;
8339+
$$ = name;
8340+
}
8341+
| DELIMITED_IDENTIFIER
8342+
{
83368343
ComObjectName *name = new (PARSERHEAP())
83378344
ComObjectName(*$1, COM_UDF_NAME, 1, PARSERHEAP());
83388345
if (name == NULL) YYABORT;
83398346
$$ = name;
83408347
}
8341-
83428348
| qualified_name '.' regular_identifier_not_builtin
83438349
{
83448350
// qualified name can't be more than 2 parts.

core/sql/regress/udr/EXPECTED001

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@
201201
>>-- DDL time. We will get an error at runtime, though.
202202
>>
203203
>>-- Testing a TMUDF with no table-valued inputs
204-
>>create table_mapping function fibonacci(start_row int, num_rows int)
204+
>>create table_mapping function "Fibonacci"(start_row int, num_rows int)
205205
+>returns (ordinal int, fibonacci_number largeint)
206206
+>external name 'Fibonacci'
207207
+>language cpp
@@ -227,7 +227,7 @@
227227
Table_mapping Functions for Library SCH.TEST001
228228
===============================================
229229

230-
SCH.FIBONACCI
230+
SCH.Fibonacci
231231
SCH.SESSIONIZE_DYNAMIC
232232
SCH.SESSIONIZE_DYNAMIC_SHARED
233233

@@ -517,7 +517,7 @@ SESSION_ID SEQUENCE_NO USERID TS
517517

518518
--- SQL operation complete.
519519
>>select *
520-
+>from UDF(fibonacci(1,10)) XO
520+
+>from UDF("Fibonacci"(1,10)) XO
521521
+>order by 1;
522522

523523
ORDINAL FIBONACCI_NUMBER
@@ -540,7 +540,7 @@ ORDINAL FIBONACCI_NUMBER
540540
--- SQL operation complete.
541541
>>
542542
>>select *
543-
+>from UDF(fibonacci(1,10)) XO
543+
+>from UDF("Fibonacci"(1,10)) XO
544544
+>order by 1;
545545

546546
ORDINAL FIBONACCI_NUMBER
@@ -560,7 +560,7 @@ ORDINAL FIBONACCI_NUMBER
560560
--- 10 row(s) selected.
561561
>>
562562
>>select sum(fibonacci_number)
563-
+>from UDF(fibonacci(50,10)) XO;
563+
+>from UDF("Fibonacci"(50,10)) XO;
564564

565565
(EXPR)
566566
--------------------
@@ -603,7 +603,7 @@ ORDINAL FIBONACCI_NUMBER
603603

604604
--- SQL operation complete.
605605
>>select *
606-
+>from UDF(fibonacci(1,10)) natural join UDF(fibonacci_java(1,10));
606+
+>from UDF("Fibonacci"(1,10)) natural join UDF(fibonacci_java(1,10));
607607

608608
ORDINAL FIBONACCI_NUMBER
609609
----------- --------------------
@@ -625,7 +625,7 @@ ORDINAL FIBONACCI_NUMBER
625625
--- SQL operation complete.
626626
>>
627627
>>select *
628-
+>from UDF(fibonacci(1,10)) cpp1 natural join
628+
+>from UDF("Fibonacci"(1,10)) cpp1 natural join
629629
+> UDF(fibonacci_java(1,10)) java1 natural join
630630
+> UDF(fibonacci_java(1,10)) java2;
631631

core/sql/regress/udr/EXPECTED107.SB

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535

3636
--- SQL operation complete.
3737
>>
38-
>>-- ADDDAYS2DATE: Adds days to a date
39-
>>create function ADDDAYS2DATE(date,int) returns (NEWDATE date)
38+
>>-- "AddDays2Date@": Adds days to a date
39+
>>create function "AddDays2Date@"(date,int) returns (NEWDATE date)
4040
+>language c parameter style sql external name 'addDaysToDate'
4141
+>library TEST107
4242
+>deterministic no sql final call allow any parallelism state area size 1024 ;
@@ -445,7 +445,7 @@ Functions for Library SCH.TEST107
445445
=================================
446446

447447
SCH.ADD2
448-
SCH.ADDDAYS2DATE
448+
SCH.AddDays2Date@
449449
SCH.CURRENT_ROLE_NAME
450450
SCH.CURRENT_USER_NAME
451451
SCH.ECHOBNUM0
@@ -568,15 +568,15 @@ ADD2
568568

569569
--- 10 row(s) selected.
570570
>>
571-
>>values(adddays2date(date'2000-01-01',2));
571+
>>values("AddDays2Date@"(date'2000-01-01',2));
572572

573573
NEWDATE
574574
----------
575575

576576
2000-01-03
577577

578578
--- 1 row(s) selected.
579-
>>select adddays2date(date'2000-01-01', a) from t10;
579+
>>select "AddDays2Date@"(date'2000-01-01', a) from t10;
580580

581581
NEWDATE
582582
----------

core/sql/regress/udr/TEST001

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ drop table t001_Datatypes;
4040
drop table_mapping function sessionize_dynamic;
4141
drop table_mapping function sessionize_dynamic_shared;
4242
drop table_mapping function sessionize_err;
43-
drop table_mapping function fibonacci;
43+
drop table_mapping function "Fibonacci";
4444
drop library TEST001;
4545
drop table_mapping function sessionize_java;
4646
drop table_mapping function fibonacci_java;
@@ -214,7 +214,7 @@ library TEST001;
214214
-- DDL time. We will get an error at runtime, though.
215215

216216
-- Testing a TMUDF with no table-valued inputs
217-
create table_mapping function fibonacci(start_row int, num_rows int)
217+
create table_mapping function "Fibonacci"(start_row int, num_rows int)
218218
returns (ordinal int, fibonacci_number largeint)
219219
external name 'Fibonacci'
220220
language cpp
@@ -363,16 +363,16 @@ execute s;
363363
-- will fail until tinyint support is added for spj/procedures
364364
cqd traf_tinyint_spj_support 'ON';
365365
select *
366-
from UDF(fibonacci(1,10)) XO
366+
from UDF("Fibonacci"(1,10)) XO
367367
order by 1;
368368
cqd traf_tinyint_spj_support reset;
369369

370370
select *
371-
from UDF(fibonacci(1,10)) XO
371+
from UDF("Fibonacci"(1,10)) XO
372372
order by 1;
373373

374374
select sum(fibonacci_number)
375-
from UDF(fibonacci(50,10)) XO;
375+
from UDF("Fibonacci"(50,10)) XO;
376376

377377
select *
378378
from UDF(fibonacci_java(1,10)) XO
@@ -383,11 +383,11 @@ from UDF(fibonacci_java(50,10)) XO;
383383

384384
control query shape join(tmudf, tmudf);
385385
select *
386-
from UDF(fibonacci(1,10)) natural join UDF(fibonacci_java(1,10));
386+
from UDF("Fibonacci"(1,10)) natural join UDF(fibonacci_java(1,10));
387387
control query shape off;
388388

389389
select *
390-
from UDF(fibonacci(1,10)) cpp1 natural join
390+
from UDF("Fibonacci"(1,10)) cpp1 natural join
391391
UDF(fibonacci_java(1,10)) java1 natural join
392392
UDF(fibonacci_java(1,10)) java2;
393393

core/sql/regress/udr/TEST107

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ drop table t10;
8181

8282
drop function GETMXV;
8383
drop function ADD2;
84-
drop function ADDDAYS2DATE;
84+
drop function "AddDays2Date@";
8585
drop function GETCOLLATION;
8686
drop function SESSION_USER_NAME;
8787
drop function VALIDATE_SESSION_USER_NAME;
@@ -161,8 +161,8 @@ language c parameter style sql external name 'add2'
161161
library TEST107
162162
deterministic no sql final call allow any parallelism state area size 1024 ;
163163

164-
-- ADDDAYS2DATE: Adds days to a date
165-
create function ADDDAYS2DATE(date,int) returns (NEWDATE date)
164+
-- "AddDays2Date@": Adds days to a date
165+
create function "AddDays2Date@"(date,int) returns (NEWDATE date)
166166
language c parameter style sql external name 'addDaysToDate'
167167
library TEST107
168168
deterministic no sql final call allow any parallelism state area size 1024 ;
@@ -355,8 +355,8 @@ execute S;
355355
select add2(a,b) from t10;
356356
select add2(a,c) from t10;
357357

358-
values(adddays2date(date'2000-01-01',2));
359-
select adddays2date(date'2000-01-01', a) from t10;
358+
values("AddDays2Date@"(date'2000-01-01',2));
359+
select "AddDays2Date@"(date'2000-01-01', a) from t10;
360360

361361
values(getMXV());
362362

0 commit comments

Comments
 (0)