• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 1. MySQL 내부 사양
    2. MySQL 플러그인 API
    3. 플러그인을 위한 MySQL서비스
    4. MySQL에 새로운 함수 추가
    1. 사용자 정의 함수 인터페이스 기능
    2. 새로운 사용자 정의 함수 추가
    1. 간단한 함수를위한 UDF 호출 순서
    2. 집계 함수를위한 UDF 호출 순서
    3. UDF 인수의 처리
    4. UDF의 반환 및 오류 처리
    5. 사용자 정의 함수의 컴파일 및 설치
    6. 사용자 정의 함수의 보안 예방 조치
    3. 새로운 Native 함수의 추가
    5. MySQL 디버그 및 이식
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

24.4.2.2 집계 함수를위한 UDF 호출 순서

이 섹션에서는 통합 UDF를 만들 때 정의해야하는 다양한 함수에 대해 설명합니다. 섹션 24.3.2 "새로운 사용자 정의 함수 추가" 에는 MySQL이이 함수를 호출 순서가 기재되어 있습니다.

  • xxx_reset()

    이 함수는 MySQL이 새로운 그룹에서 첫 번째 행을 발견했을 때 호출됩니다. 이것은 모든 내부 요약 변수를 리셋하고 지정된 UDF_ARGS 인수를 그룹의 내부 요약 값의 첫 번째 값으로 사용합니다. xxx_reset() 는 다음과 같이 선언합니다.

    void xxx_reset(UDF_INIT *initid, UDF_ARGS *args,
                   char *is_null, char *error);
    

    MySQL 5.6에서는 xxx_reset() 는 필요 없는지 사용되지 않고 UDF 인터페이스는 대신 xxx_clear() 가 사용됩니다. 그러나 이전 버전의 서버에서 UDF를 동작시키는 경우 xxx_reset() 와 xxx_clear() 을 모두 정의 할 수 있습니다. (두 함수를 포함하면 xxx_reset() 함수는 모든 변수를 재설정 xxx_clear() 를 호출하고 나서, xxx_add() 를 호출 UDF_ARGS 인수를 그룹의 첫 번째 값으로 추가함으로써 많은 경우 내부적으로 구현할 수 있습니다.)

  • xxx_clear()

    이 함수는 MySQL에서 요약 결과를 재설정 할 필요가있는 경우에 불려갑니다. 이것은 새로운 그룹이 될 때마다 가장 먼저 호출되지만 일치하는 행이없는 쿼리의 값을 재설정하기 위해 호출 될 수도 있습니다. xxx_clear() 는 다음과 같이 선언합니다.

    void xxx_clear(UDF_INIT *initid, char *is_null, char *error);
    

    is_null 은 xxx_clear() 를 호출하기 전에 CHAR(0) 을 가리 키도록 설정됩니다.

    처리에 문제가있을 경우는 error 인수가 가리키는 변수에 값을 저장할 수 있습니다. error 는 스트링 버퍼가 아니라 단일 바이트 변수를 가리 킵니다.

    xxx_clear() 는 MySQL 5.6에서 필요합니다.

  • xxx_add()

    이 함수는 같은 그룹에 속하는 모든 행에 대해 호출됩니다. 이것은 UDF_ARGS 인수의 값을 내부 요약 변수에 추가하는 데 사용합니다.

    void xxx_add(UDF_INIT *initid, UDF_ARGS *args,
                 char *is_null, char *error);
    

통합 UDF의 xxx() 함수는 비 집약 UDF와 마찬가지로 선언하십시오. 섹션 24.3.2.1 "간단한 함수를위한 UDF 호출 순서" 를 참조하십시오.

통합 UDF의 경우, MySQL은 그룹의 모든 행이 처리 된 후 xxx() 함수를 호출합니다. 일반적으로 여기 UDF_ARGS 인수에 액세스 할 수없고 내부 요약 변수에 따라 값을 반환합니다.

xxx() 에서 반환 처리는 비 집약 UDF와 같이 실시합니다. 섹션 24.3.2.4 "UDF의 반환 및 오류 처리" 를 참조하십시오.

xxx_reset() 함수 및 xxx_add() 함수는 UDF_ARGS 인수를 비 집약 UDF 함수와 마찬가지로 처리합니다. 섹션 24.3.2.3 "UDF 인수의 처리" 를 참조하십시오.

is_null 및 error 포인터 인수는 xxx_reset() , xxx_clear() , xxx_add() 및 xxx() 에 대한 모든 호출 동일합니다. 이것을 사용하면 오류가 발생했거나 xxx() 함수가 NULL 을 반환 여부를 기억할 수 있습니다. 문자열을 *error 에 저장하지 마십시오. error 는 스트링 버퍼가 아니라 단일 바이트 변수를 가리 킵니다.

*is_null 은 ( xxx_clear() 를 호출하기 전에) 그룹마다 리셋됩니다. *error 가 재설정되는 것은 아닙니다.

xxx() 가 반환 될 때 *is_null 또는 *error 가 설정되어 있다면, MySQL은 그룹 함수의 결과로서 NULL 을 반환합니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved