일부는 올바르게 설치되고 완전히 작동합니다PostgreSQL설치 CAN"실패"이러한 회귀 젠 토토 중 일부는 그로 인해 발생합니다 다양한 부동 소수점과 같은 플랫폼 별 아티팩트 표현 및 시간대 지원. 젠 토토는 현재입니다 간단한 사용diff비교 참조 시스템에서 생성 된 출력에 대해 결과는 작은 시스템 차이에 민감합니다. 시험이있을 때 보고"실패", 항상 검사하십시오 예상 결과와 실제 결과의 차이; 당신은 잘 할 수 있습니다 차이가 중요하지 않다는 것을 알 수 있습니다. 그럼에도 불구하고 우리 여전히 정확한 참조 파일을 유지하기 위해 노력합니다 지원되는 플랫폼이므로 모든 젠 토토가 통과하다.
회귀 젠 토토의 실제 출력은 파일에 있습니다src/test/regess/results디렉토리. 그만큼 젠 토토 스크립트 사용diff각각을 비교합니다 에 저장된 참조 출력에 대한 출력 파일src/test/regress/expect디렉토리. 검사를 위해 차이가 저장됩니다.src/test/regress/regression.diffs. (또는 할 수 있습니다 달리다diff자신, 원하는 경우.)
일부 회귀 젠 토토 중 일부는 의도적으로 무효가 포함됩니다 입력 값. 오류 메시지는에서 나올 수 있습니다.PostgreSQL코드 또는 호스트 플랫폼 시스템 루틴. 후자의 경우 메시지 플랫폼마다 다를 수 있지만 비슷한 반영을 반영해야합니다 정보. 이러한 메시지의 차이로 인해 A가 발생합니다."실패"회귀 젠 토토 검사로 검증.
이미 설치된 서버에 대해 젠 토토를 실행하는 경우 그것은 다른 통합 주문 로케일로 초기화되었습니다 C, 정렬 순서로 인해 차이가있을 수 있습니다. 후속 실패. 회귀 젠 토토 스위트가 설정되었습니다 대체 결과 파일을 제공 하여이 문제를 처리하십시오 함께 많은 지역을 처리하는 것으로 알려져 있습니다. 을 위한 예,char젠 토토, the 예상 파일char.out처리Candposix로컬 및 파일char_1.out다른 많은 지역을 처리합니다. 회귀 젠 토토 드라이버가 있습니다 확인시 일치하는 최상의 파일을 자동으로 선택하십시오. 성공 및 컴퓨팅 실패 차이. (이것은 의미합니다 회귀 젠 토토는 결과가 구성된 로케일에 적합합니다. 젠 토토는 간단합니다 가장 잘 작동하는 결과 파일 하나를 선택하십시오.)
어떤 이유로 기존 예상 파일이 커버되지 않으면 일부 로케일, 새 파일을 추가 할 수 있습니다. 이름 지정 체계는입니다.TestName_Digit.out. 실제 숫자는 아닙니다 중요한. 회귀 젠 토토 드라이버는 그럴 것임을 기억하십시오 이러한 모든 파일이 똑같이 유효한 젠 토토 결과라고 생각하십시오. 만약에 젠 토토 결과는 플랫폼별로 설명되어 있으며 기술 된 기술입니다 안에PostgreSQL : 문서 : 7.4 : 토토 캔 별 비교 파일대신 사용.
Horology젠 토토를 실행하면 젠 토토가 실패합니다 일광 절약 시간 전환의 날 또는 다음 날 하나. 이 쿼리는 자정 사이의 간격이 예상됩니다 어제, 오늘 자정과 자정 내일은 정확히입니다 24 시간-일광 절약 시간이 잘못되면 잘못되었습니다 한편 효과로 나왔다.
참고 :미국의 일광 절약 시간 규칙이 있기 때문입니다 사용 된이 문제는 항상 첫 번째 일요일에 발생합니다. 4 월, 10 월 마지막 일요일, 그리고 그들의 다음 월요일, 일광 절약 시간이 언제인지에 관계없이 당신이 사는 곳에 효과. 또한 문제가 나타납니다 또는 자정 태평양 시간에 사라집니다 (UTC-7 또는 UTC-8). 현지 시간 자정이 아닙니다. 따라서 실패가 나타날 수 있습니다 토요일 늦거나 화요일을 내내 계속 유지합니다. 당신이 사는 곳에 따라.
대부분의 날짜와 시간 결과는 시간에 따라 다릅니다. 구역 환경. 참조 파일은 시간 동안 생성됩니다 존pst8pdt(캘리포니아 버클리), 젠 토토가 실행되지 않으면 명백한 실패가있을 것입니다. 해당 시간대 설정으로. 회귀 젠 토토 드라이버 세트 환경 변수pgtztopst8pdt, 일반적으로 적절한 결과를 보장합니다. 그러나 운영 체제는에 대한 지원을 제공해야합니다.pst8pdt시간대 또는 시간 영역 의존성 젠 토토가 실패합니다. 기계를 확인합니다 이 지원이 있습니다. 다음을 입력하십시오.
env tz = pst8pdt 날짜
위의 명령은 현재 시스템을 반환해야합니다 에서의 시간pst8pdt시간대. 인 경우pst8pdt시간대를 사용할 수 없습니다. 그러면 시스템이 UTC에서 시간을 반환했을 수 있습니다. 인 경우pst8pdt시간대가 누락되었습니다 시간대 규칙을 명시 적으로 설정하십시오.
pgtz = 'pst8pdt7, m04.01.0, m10.05.03'; 수출 pgtz
수용하지 않는 일부 시스템이있는 것으로 보입니다. 현지 시간대를 명시 적으로 설정하기위한 권장 구문 규칙; 다른 것을 사용해야 할 수도 있습니다pgtz그러한 기계 설정.
이전 시간대 라이브러리를 사용하는 일부 시스템은 적용되지 않습니다 1970 년 이전 날짜에 대한 일광 절약 수정으로 인해 발생합니다 1970 년 이전PDT시간 표시PST대신. 이로 인해 젠 토토에서 국소화 된 차이가 발생합니다 결과.
일부 젠 토토에는 64 비트 플로팅 포인트를 계산하는 것이 포함됩니다 숫자 (이중 정밀) 테이블에서 열. 수학과 관련된 결과의 차이 의 기능이중 정밀열 관찰되었습니다. 그만큼float8and지오메트리젠 토토는 특히 발생하기 쉽습니다 플랫폼에서 또는 다른 차이에 대한 작은 차이 컴파일러 최적화 옵션. 인간 안구 비교입니다 이러한 차이의 실제 중요성을 결정해야합니다 보통 10 진수 오른쪽에있는 10 곳입니다. 가리키다.
일부 시스템은 제로를 제로로 표시합니다-0, 다른 사람들은 그냥 보여주고0.
일부 시스템 신호 오류pow ()
andexp ()
전류가 기대하는 메커니즘과 다르게PostgreSQL코드.
동일한 행이 출력되는 차이점이 표시 될 수 있습니다. 예상 파일에 나타나는 것과는 다른 순서로 ~ 안에 대부분의 경우 이것은 엄밀히 말해서 버그가 아닙니다. 대부분의 회귀 젠 토토 스크립트는 사용하기에 만족스럽지 않습니다주문 by모든 단일select, 결과 행 순서가 있습니다 SQL의 편지에 따라 잘 정의되지 않았습니다 사양. 실제로, 우리는 똑같이보고 있기 때문에 동일한 소프트웨어로 동일한 데이터에서 실행되는 쿼리 우리는 일반적으로 모든 플랫폼에서 동일한 결과 순서를 받고 그래서 부족주문 by문제. 일부 쿼리에는 크로스 플랫폼 순서가 나타납니다 그러나 차이점. (순서 차이도 가능합니다 비 C 로케일 설정에 의해 트리거됩니다.)
따라서 순서 차이가 표시되면 그렇지 않습니다 쿼리에 query가 없다면 걱정할 것입니다.주문 by결과입니다 위반. 그러나 어쨌든 우리가 추가 할 수 있도록보고하십시오주문 by해당 특정 쿼리에 따라서 가짜 제거"실패"향후 릴리스
왜 우리가 모든 회귀 젠 토토를 주문하지 않는지 궁금 할 것입니다. 이 문제를 한 번에 제거하기 위해 명시 적으로 쿼리합니다. 그 이유는 회귀 젠 토토가 덜 만들어지기 때문입니다. 쿼리 계획을 행사하는 경향이 있기 때문에 유용하지 않습니다. 그것들을 제외하기 위해 순서대로 결과를 생성하는 유형 그렇지 않습니다.
에 적어도 하나의 사례가 있습니다random생산하려는 젠 토토 스크립트 무작위 결과. 이로 인해 회귀 젠 토토가 실패하게됩니다 가끔 (아마도 5-10 개의 시험마다 한 번). 타자
diff results/random.out random.out random.out
는 하나 또는 몇 줄의 차이 만 생성해야합니다. 너 임의의 젠 토토가 항상 반복되는 경우 걱정할 필요가 없습니다. 시도. (반면에 임의의 젠 토토가절대보고서 회귀 젠 토토의 많은 시험에서도 실패하면 아마도해야 할걱정.)