java 저장 함수를 생성하여 254자가 넘는 INPUT을 주었을 경우 OUTPUT이 NULL로 리턴되는 현상 발생

by 두목원슝 posted Oct 21, 2022


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Ubuntu 18.04 64bit
CUBRID Ver.
CUBRID 11.2 (11.2.1.0677-82f461a) (64bit release build for Linux) (Jul 26 2022 18:30:33)
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
openjdk version "1.8.0_342"


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
 

제가 간단한 java 저장 함수를 만들어서  test를 하고 있는데 input 값이 254자가 넘어가면 널로 리턴되는 현상이 보입니다.

무엇이 문제가 되는지 도움을 얻을 수 있을까요?

 

== 테스트 했던 스크립트 ==

# JAVA

public static String JavaSelfTest(String paramString) {
  try {
    return paramString;
  } catch (Exception exception) {
    System.err.println("test cubrid 11.2");
    return "FALSE";
  } 
}

 

# JAVA 저장 함수
CREATE FUNCTION TEST_CUB (
  I_DATA VARCHAR(4000)
)
  RETURN VARCHAR(4000)
AS
  LANGUAGE JAVA
  NAME 'TestCub.JavaSelfTest( java.lang.String ) return java.lang.String';
    
# TEST SQL    
select TEST_CUB('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890');
 

# TEST 결과

csql> select TEST_CUB('123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890');

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

  TEST_CUB('12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456
7890123456789012345678901234567890123456789012345678901234' '5678901234567890123456789012345678901234567
890')
======================
  ''

1 row selected. (0.004749 sec) Committed. (0.000173 sec)

1 command(s) successfully processed.
 

※ 참고로 "Result of SELECT Command in Line" 여기를 보시면 3번째 줄에 [1234' '5678] 이런식으로 출력되는것으로 보아 뭔가 254자가 넘어갈때 변조가 일어 나는것 같습니다.

※ 또한,  254자가 넘어가면 NULL로 리턴 되는 현상은 11.0에서는 재현되지 않았습니다.

 

 


Articles

2 3 4 5 6 7 8 9 10 11