서 문 .
最近产品で使用する。到一款이 플 러 그 인은 VS Code 에서 데이터 베이스 관 리를 구현 할 수 있으며 매우 많은 데이터 소 스 유형 을 지원 합니다 .
공식 데이터 소 스 유형 은 Co ck ro ach DB , Maria DB , My SQL , Post gre SQL , SQL ite , Microsoft SQL Server / Azure 및 Microsoft Azure 입니다 .
또한 많은 커뮤니티 데이터 소 스 드라이브 가 있습니다 .우리가 관리 하는 데이터 소 스 유형 은 Tr ino 이며 아이 콘 은 작은 토 끼 입니다 .사용 된 구성 요소 는
트 리 노 드라이 버
그러나 이 플 러 그 인을 사용할 때 두 가지 문제가 있습니다 .
문제 점
문제 1 은 Tr ino 드라이 버 가 Tr ino 데이터 소 스에 연결 하기 위해 H tt ps 링크 를 지원 하지 않는다는 것입니다 (처 음 에는 문제가 하나 뿐 이었 지만 해결 후 두 가지 더 발견 되었습니다 .)
문제 2 는 테이블 레 코 드 미리 보 기가 지원 되지 않는다는 것입니다 .
문제 3 은 스 키 마 를 전환 할 때 테이블 레 코 드를 미리 볼 수 없다는 것입니다 .
내 임무 는 이 두 가지 문제를 해결 하는 것이다 .
구성 요 소 관계 정리
SQL To ols 와 Tr ino 드라이 버 의 구성 요소 문 서를 살펴 본 후 후 자가 전 자에 의존 한다는 것을 알게 되었습니다 .
SQL To ols 는 UI 및 기본 도 킹 인터페 이 스를 제공하는 플랫폼 역할을 합니다 .트 리 노 드라이 버 는
Tr ino 데이터 소 스가 만든 어 댑 터 입니다 .다른 데이터 소 스 유형 도 지원 됩니다 .
Tr ino 드라이 버 플 러 그 인은 Tr ino 의 HTTP 프로토 콜 을 기반으로 하는 Tr ino - Client 프로젝트를 기반으로 합니다 . Tr ino 데이터 소 스에 대한 연결 은 A xi os 를 사용하여 SQL 을 사용하여 구현 되었습니다 .
이것이 그들의 관계 입니다 .
SQL To ols 에는 Tr ino 드라이 버 가 포함 됩니다 .
Tr ino 드라이 버 는 tr ino - client 를 포함 합니다 .
tr ino - client 는 axi os 및 tr ino HTTP API 를 포함 합니다 .
디 버 깅 , 문제 해결
데이터 소 스에 대한 https 연결 을 구현 하려면 tr ino - client 이 라이 브 러 리가 지원 하지 않는 것을 참조 하십시오 .
디 버 깅 할 때 최신 공식 버전 의 tr ino - client (v 0. 2. 0) 는 지원 되지 않지만 최신 분 기 main 는 지원 됩니다 . (현 재 저 자는 v 0. 2. 1 을 릴 리스 했습니다 .) H TT PS 를 지원 하는 방법
그래서 나는 메 인 분 기를 기반으로 Tr ino 드라이 버 를 대체 하는 라이 브 러 리를 구축 했습니다 .지원 되는 H TT PS .
그러나 Tr ino 드라이 버 가 데이터 소 스에 연결 할 때 추가 매 개 변 수 도 필요합니다 . false veri fy SS L C ert :
그러면 첫 번째 문제가 해결 되었습니다 .이러한 문제 해결 은 본질 적으로 인증 서를 확인 하지 않으며 H TT PS 를 지원 하는 것이 아닙니다 .
데이터 소 스에 대한 진정한 H TT PS 연결 을 구현 하려면 Tr ino Driver 라이 브 러 리를 재 구 성 하고 업 로드 된 파일 의 양 식 항목 을 추가 하고 인증 서를 사용하는 axi os 의 자세 를 디 버 그 해야합니다 .
두 번째 문제는 Tr ino 데이터 소 스에 연결 한 후에 나타 났습니다 . (작 은 플 러 그 인 사용 문제가 발생 했으며 비 활 성 커뮤니티 는 신뢰할 수 없습니다 .)
두 번째 문제는 테이블 레 코 드 수 를 미리 볼 때 O FF S ET 문제를 보고 하는 것입니다 .이 문제는 SQL 에 문제가 있는 것처럼 보입니다 . 
복잡한 구성 요소 , 중 첩 플 러 그 인의 문제가 발생 하면 먼저 그 플 러 그 인의 문제를 찾 아야 하며 , 비교 를 통해 다른 데이터 소 스 플 러 그 인 에는 이 문제가 없으며 Tr ino 데이터 소 스에 만 나타나 므로 문제는 Tr ino 드라이 버 플 러 그 인에 나타 납니다 .
어 쩔 수 없어 .
미친 글로벌 검색 은 O FF S ET 이 있는 SQL 코드를 발견했습니다 .자신의 우 물 바닥 의 개 구 리 SQL 지식 으로 , 문제의 위치를 발견했다 .
이 라이 브 러 리에 쓰 여 진 페이 징 쿼 리 sq l 은 다음과 같습니다 .
S EL ECT *
FR OM ${ (p) = p . table . label> p . table }||
LIM IT ${ (p) = p . limit> 50 [ 중 고 ]||
O FF S ET ${ (p) = p . of fs et> 0} ;||
而在百度查询后得到的结果是,Trino的查询SQL,OFFSET一般放在LIMIT 之前,并且去掉末尾的
수정 한 후 다시 디 버 그 하십시오 .하 하 하 ..뜻 밖 에도 할 수 있다 .
플 러 그 인을 빌 드 하고 테스트 를 위해 보냈 을 때 , 두 시간 후 , 테스트 피 드 백 은 새로운 버 그가 발견 되었다 고 말했습니다 .
나의 첫 번째 반응 은 이 문제가 무엇이든 간에 절 벽 은 원 작 자에 의해 작성 되었으며 내 것이 불가능 하다는 것입니다 .
마지막으로 한 가지 질문은
데이터 소 스를 링크 한 후 많은 스 키 마가 있으므로 테이블 은 스 키 마 아래에 저장 되며 스 키 마 를 전환 하고 테이블 레 코 드를 볼 때 오류 가 발생합니다 . 
이런 문제가 발생 하는데 , 플 러 그 인을 출시 할 때 실제로 테스트 한 사람이 있습니까 ?아니면 당신은 하나의 스 키 마 를 가지고 있습니까 ?
어 쩔 수 없다 . 이런 틈 새 의 데이터 소 스와 플 러 그 인 에는 관심을 기울 이는 사람이 거의 없다 . 만약 네가 반드시 사용 한다면 , 너는 고 칠 수 밖에 없고 , 고 칠 수 없다 . 저 자와 직접 대 선 으로 가 자 .
Tr ino 드라이 버 플 러 그 인은 SQL To ols 에서 인 수를 받은 후 SQL 쿼 리에서 schema 인 수를 사용하지 않습니다 .다음은 저 자가 작성 한 두 개의 SQL 입니다 .
S EL ECT *
FR OM ${ (p)) = p . table . label> p . table }||
O FF S ET ${ (p) = p . of fs et> 0}||
LIM IT ${ (p) = p . limit> 50 [ 중 고 ]||
S EL ECT count (1) TO T AL
FR OM ${ (p) = p . table . label> p . table} ;||
내가 바 꾼 후에
S EL ECT *
FROM ${(p) = ' + p . table . label}
O FF S ET ${ (p) = p . of fs et> 0}||
LIM IT ${ (p) = p . limit> 50 [ 중 고 ]||
S EL ECT count (1) TO T AL
FROM ${(p) = ' + p . table . label}
수정 한 후 새 플 러 그 인을 다시 빌 드 하면 새 플 러 그 인을 사용할 수 있습니다 .공식 버 전을 사용 하려면 저 자에게 재 촉 하고 내 PR 을 검토 해야합니다 .
관련 코 드의 PR :
https://github.com/regadas/sqltools-trino-driver/pulls? q = + author % 3 AP m c F izz +
요 약
중요한 것은 얼마나 많은 코드를 썼 는지 가 아니라 이러한 코 드가 가져다 주는 가치 이며 항상 자신의 가치를 생각하고 있습니다 .
성장 은 강 을 만나 다 리를 건 립 고 산 을 만나 길을 열어 주는 것이다 .
Leave a Reply