Skip to main content

Posts

Showing posts from 2022

Throw back 2022

Starburst 2021年の8月23日にStarburstに入社して1年以上経ったのでその記録もかねて2022年の振り返りです。以前はTrinoに既にコントリビュートしている人が入社してきている印象がありましたが最近は入社してから初めてPRを送る人もよく見かけるので会社としてのフェーズの変化を感じます。 開発する機能によってOSSか社内版かが決まるのですが、僕はほぼフルタイムでTrinoにコミットしています。数年前はOSSのフルタイムコミッターに対する憧れが自分にはあったのですが、実際になってみるとチームにはメンテナーは自分の他にもう1人しかいないので、その人が休暇をとると自分のコードがコミットできず時々困る場面があります。そういった際はPRのレビューにあてる時間を長くしたりして都度調整しています。 Connectors team 入社当時はStarburst EnterpriseのConnectorsチームというSaaS、JDBC、NoSQL系のコネクターを開発するチームに所属していました。チームの名前からはコネクターの開発のみを行う印象を受けますが、必要に応じてエンジンにも手を入れます。例えばALTER TABLE ... SET PROPERTIESやTRUNCATE TALEなどの新しいシンタックスは僕が追加しました。コネクターによって気をつけるポイントは異なるのでそれらについて満遍なく学べたことは良かったです。例えばSaaS系のコネクターは自分達のコードが変わっていなくてもSaaSサービス側の変更で期待とは異なる動作に繋がることがあるので、パッと見では冗長とも見えるほど多くのテストコードを書く必要があります。JDBC系のコネクターではJDBCドライバーの標準になっている部分の開発は比較的楽なのですが、タイプマッピングなど実装依存の部分や、ドライバーのコードがオープンになっていないコネクターを直すのはなかなかの手間でした。JDBC系の多くのコネクターがJulianからGregorianのカレンダースイッチ(1582月10-05日~1582月10日14)以前の日付を正常に扱えないバグを途中見つけたのですが個別に直していくのは時間がかかりました。 Lakehouse team 2022年3月23日からはLakehouseチームというHadoopエコシステム系...

Trino enhancements in 2022

Trinoで2022年に追加された新機能を紹介します。他にも多くの機能が追加されていますがメジャーなものに絞りました。 Polymorphic table functions Polymorphic table functionsは聞き慣れないかもしれませんが、スカラー関数とは違って複数の行や列を返却できる関数のことです。例:  SELECT * FROM TABLE(my_function(1, 100)); テーブルを引数に取れないなど内部的にはまだ未実装の部分もありますが、クエリをパススルーする関数がJDBC系コネクター、Elasticsearch, BigQueryおよびMongoDBが実装しています。関数の性質上、クエリをリモートに実際に実行する前に結果のカラム名とタイプを取得する必要があります。JDBCはPrepared StatementでResultSetMetaDataから取得、Elasticserachは取得が難しいので現状は1カラム1レコードにJSONを詰め込む形の実装、BigQueryはクエリをdry runして取得、MongoDBは内部的に管理している_schemaコレクションから取得といった流れになっています。 JDBCコネクターを使用する人が多そうなのでもう少し内部的な実装を説明すると、ResultSetMetaDataを取得する必要があるのでDDLなどは基本的にはサポートされていません。"基本的には"と書いたのはJDBCドライバの実装依存だからです。DDLに関してはTable functionではなくProcedureで実装される予定です  #12322 。次に内部的には完全にパススルーしている訳ではなくSELECT * FROM (...) oのようにラップしています。そのため対象のデータベースが生成されたクエリを実行できない場合もあります。例えばSELECT * FROM (SHOW DATABASES) oなどはエラーになるDBが多いでしょう。これらはあくまでデフォルトの実装 (DefaultQueryBuilder)なのでコネクターを自身で開発されている方は適宜変更することも可能です。 関連リンク Diving into polymorphic table functions with Trino Tabl...

Team Towa

10月9日からシンガプーラの男の子を飼い始めました。8月4日生まれなので約2ヶ月の仔猫です。初日に寝室にケージを置いて、鳴き声がひどい時に2回ほど出してあげたのですが、次の日にシーツが濡れていてなんだろうと思い匂いを嗅いでみるとおしっこでした...。幸い日曜日だったので熱湯でマットレスを殺菌したりコインランドリーで洗濯できたので不幸中の幸いでした。初日はケージから出さない方が良いというのは聞いてましたが、こういったことを防ぐためにも重要なんだなと感じました。2日目以降はトイレを失敗することはなく元気に暮らしています。性格は今のところとにかく遊びたがりでこちらが止めない限りずっと遊んでいます。 現在働いているStarburstでは入社時の自己紹介でTeam dogもしくはTeam cat(犬好きか猫好きか)を共有する文化があります。僕が入社した際はタイムゾーンの問題で自己紹介のスライドに間に合わず聞かれなかったのですが、この度晴れてTeam catに入りました。在宅勤務なので仕事中に遊んでスイッチが入ると大変な場面もありますが、大きくなったらこんなに遊んでくれないかもなという思いもあり出来るだけ一緒に遊んでいます🐱

Hawaii 2022

9/15~23にハワイに行ってきたのでその記録です。前半はシェラトン、後半はワイキキビーチコマーに泊まりました。色んなお店でご飯を食べましたが、RumFireのステーキが一番美味しかったです。ダウンタウンで軽い雨が降ってましたがそれ以外は天気も良くて気持ちよかったです。またそのうち行きたいです。 ヒルトンからの景色 ワイキキビーチ RumFireのステーキ RumFireのグリル野菜 サンドバー マラサダ ウルフギャングのステーキ ウルフギャングのサラダ ウルフギャングのティラミス ハワイシアター ダウンタウン スターオブホノルル ステーキ SHACK ビーチコマーの朝食 ポリネシアンカルチャルセンター BASALT ホールフーズ Arancino at The Kahala ハウツリー コウカンチョウ