Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CBRD-25672] Stored functions are not allowed as default values ​​for… #2015

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

kiho-um
Copy link
Contributor

@kiho-um kiho-um commented Dec 27, 2024

Refer to http://jira.cubrid.org/browse/CBRD-25672

  1. 테이블과 저장 프로시저/함수의 기본값에 저장 함수 지정을 허용하지 않도록 스펙을 수정
  • 테이블 컬럼과 저장 프로시저/함수 파라미터의 기본값에 저장 함수 미허용

… table columns and stored procedure/function parameters.
@swi0110
Copy link
Contributor

swi0110 commented Dec 27, 2024

아래의 두가지 시나리오를 검토해주시기 바랍니다.

  1. 세션 변수(a)에 함수 결과를 저장한 후, 세션 변수를 default 값을 지정
csql> create or replace function demo_hello_ret() return varchar as 
begin
    return 'hello cubrid';
end;

csql> select demo_hello_ret() into a;

csql> CREATE TABLE t1 (id INT, def_val VARCHAR DEFAULT a);

csql> INSERT INTO t1 (id) VALUES (1);

csql> select * from col_def_test;

=== <Result of SELECT Command in Line 1> ===

           id  def_val             
===================================
            1  'hello cubrid'      

csql> drop function demo_hello_ret;

csql> INSERT INTO t1 (id) VALUES (2);

csql> select * from col_def_test;

=== <Result of SELECT Command in Line 1> ===

           id  def_val             
===================================
            1  'hello cubrid'      
            2  'hello cubrid'
  1. procedure의 변수의 값을 function으로 지정
csql> create or replace function demo_hello_ret() return varchar as 
begin
    return 'hello cubrid';
end;

csql> CREATE OR REPLACE PROCEDURE test_var () AS
    a VARCHAR := demo_hello_ret();
BEGIN
    DBMS_OUTPUT.put_line(a);
END;

csql> call test_var();

=== <Result of CALL Command in Line 1> ===

  Result              
======================
  NULL                

<DBMS_OUTPUT>
====
hello cubrid


csql> drop function demo_hello_ret;

csql> call test_var();

In the command from line 1,

ERROR: Stored procedure execute error: 
  (line 2, column 18) Stored procedure/function 'dba.demo_hello_ret' does not exist

@kiho-um
Copy link
Contributor Author

kiho-um commented Dec 27, 2024

@swi0110(원룡님)
이 TC는 테이블의 컬럼에 default로 함수를 사용할 수 없다는 메시지 입니다. 또한
프로시저 내의 변수에 대한 default로 함수를 사용할 수 없다는 메시지 입니다.

원룡님이 검토 요청한 부분은 이 TC와는 다른 부분 입니다.

  1. 세션 변수(a)에 함수 결과를 저장한 후, 세션 변수를 default 값을 지정
  2. procedure의 변수의 값을 function으로 지정
    위 2가지의 내용에 대해 왜 검토를 요청하신지 알려줄 수 있나요?

@swi0110
Copy link
Contributor

swi0110 commented Jan 2, 2025

table column과 procedure/function의 parameter가 아닌 다른 곳의 값을 함수로 지정했을 때, 어떻게 동작하는지 확인하고 싶었습니다.
불필요하다고 판단되시면 scenario에 포함하지 않으셔도 좋습니다.

@@ -0,0 +1,54 @@
--+ server-message on
-- Verified for CBRD-25762
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
-- Verified for CBRD-25762
-- Verified for CBRD-25672

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

등록된 이슈 번호 변경 하였습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants