Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    kenji yoshida
    @xuwei-k
    自分で書いておいてなんだけど、コンパニオン用の親作っておくの、たしかにボイラプレートは減るんだけど、減るの少しだけだし、上記のようないろいろなトレードオフと論点があって、標準に入れたい!と主張するには躊躇われて悩ましいところ・・・
    Manabu Nakamura
    @gakuzzzz
    タイミング的には同じですが、companion オブジェクトは他にも mixin させたり継承させたりみたいなのが出てきそうなので、なるべく他のクラスを継承できなくなる、みたいな制限を無くしたい、という感じです。
    kenji yoshida
    @xuwei-k
    trait で abstract method にする感じですか?
    まぁひとまず任せよう(?)
    Manabu Nakamura
    @gakuzzzz
    あれ? 単にこうすればいいかな、みたいな
    trait ScalikejdbcValueCompanion[A, B] extends (A => B) {
      def unapply(value: B): Option[A] 
      final implicit lazy val binder: TypeBinder[B] = implicitly[TypeBinder[A]].map(apply)
      final implicit lazy val unbinder: ParameterBinderFactory[B] = implicitly[ParameterBinderFactory[A]].xmap(apply, unapply(_).get)
    }
    kenji yoshida
    @xuwei-k
    それそのtrait定義時点で implicit not found にならないですか?
    Manabu Nakamura
    @gakuzzzz
    あ、そうか、ボケてました。そうですね
    kenji yoshida
    @xuwei-k
    scalikejdbc/scalikejdbc#520 再現コードもらわないとなんとも言えない、みたいな感想になった。mapper-generatorのテストでautoConstruct使ってるし、全く動かないとかはない気がするので
    Tsukasa Kitachi
    @kxbmap
    ParameterBinderFactoryにArray[Byte]のインスタンスが用意されてないのって何か理由があります?
    Kazuhiro Sera
    @seratch
    なさそうな。
    Tsukasa Kitachi
    @kxbmap
    あとでBindersにあるやつ追加してPRしますね
    Manabu Nakamura
    @gakuzzzz
    :pray:
    Tsukasa Kitachi
    @kxbmap
    https://github.com/scalikejdbc/scalikejdbc/pull/522/commits/b90ece035abb3d54f331285d2cecb32f16907f0b#diff-a44f3b560343189aff31f4d632c103f6R206
    これPramerterBinderFactory/Bindersのxmapがnullチェックしてる影響で、コメント外すとstmt.setObject(3, null)が呼ばれてしまう
    Manabu Nakamura
    @gakuzzzz
    あー なるほど。Option[SQLSyntax] も xmap 使わないで自前で定義した方が良さそうですね。
    optionalParameterBinderFactory の中で asInstanceOf 使ってるなら AsIsParameterBinder の map も asInstanceOf で実装して optionalParameterBinderFactory はそのままにしても良かったかも知れない
    Manabu Nakamura
    @gakuzzzz
    scalikejdbc/scalikejdbc#521 assignされてますが結局何をすれば……?
    Kazuhiro Sera
    @seratch
    ParameterBinderFactory をリードしたメンテナとしてコメント、フォローしてもらえるならというくらいです。
    Manabu Nakamura
    @gakuzzzz
    そもそもの動機に納得してもらえて無い様なのでどうにもですね……
    Kazuhiro Sera
    @seratch
    2.4.1 出すかな
    Tsukasa Kitachi
    @kxbmap
    :+1:
    Manabu Nakamura
    @gakuzzzz
    scalikejdbc/scalikejdbc#530 を解決するのに ParameterBindarFactory の型引数を contravariant にしてこねくり回してみましたが gakuzzzz/scalikejdbc@3c8a961
    ParameterBindarFactory[Null] が ambiguous implicit values になってしまう謎。
    priority 的には Null が一番高くなるようにしてるつもりなんですが https://github.com/gakuzzzz/scalikejdbc/blob/3c8a96177fdb75deb4f82b614a4a31a55ea3186c/scalikejdbc-core/src/main/scala/scalikejdbc/ParameterBinderFactory.scala#L57-L62
    うまくいかないのは Null だけなんか特殊な動きするんでしたっけ?
    kenji yoshida
    @xuwei-k
    https://issues.scala-lang.org/browse/SI-2509 関連するか知らんけど、varianceとimplicit組み合わせると面倒らしいですよ、という何か
    (これ直したい、とか言ってた) https://twitter.com/milessabin/status/737216211835047936
    Manabu Nakamura
    @gakuzzzz
    ParameterBindarFactory[Null] は implicit val をやめて implicit object にしたら何故か解決したけど、 java.sql.Date と java.util.Date の継承関係とかでまた問題になるので contravariant にするのはやっぱり問題ありそう。

    ParameterBindarFactory の xmap を削除するのだけ対応して、こういう定義を可能にする、という対応だとどうでしょうか? > @all
    gakuzzzz/scalikejdbc@748fabe

    ただこれめっちゃバイナリ互換性壊れる

    kenji yoshida
    @xuwei-k
    些細な疑問なんですが、 scalikejdbc.Binders のインスタンスってimplicitにしたら衝突するんでしたっけ?
    Binders.string.xmap じゃなく implicitly[Binders[String]].xmap と書きたかったな、くらいな大して重要じゃない使い勝手の面での何かに気づいたので
    Manabu Nakamura
    @gakuzzzz

    TypeBinder や ParameterBinderFactory の object 継承関係で priority とか調整してるので、 Binders も implicit にするとその辺の調整が面倒そうだなーという感じでした。
    implicitly[Binders[String]].xmap の書きたみは僕もあるので、LowPriorityで

    def foo[A](implicit b: TypeBinder[A], p: ParameterBinderFactory[A]): Binders[A]

    的なものを用意するのはありかも?

    kenji yoshida
    @xuwei-k
    Scala 2.12.0-M5 対応、 ライブラリ出揃ってる( specs2 と scalatest ) けど、scalatestが3系しか出してなくて、一部コンパイルエラー、みたいな状況
    xuwei-k/scalikejdbc@ceb8e1a
    2系もリリースしてくれ、って言ったらしてくれないかな・・・
    Kazuhiro Sera
    @seratch
    issue たててみました scalatest/scalatest#925
    kenji yoshida
    @xuwei-k
    ひとまずどうにかしてみた https://github.com/scalikejdbc/scalikejdbc/pull/541/files
    KAWACHI Takashi
    @tkawachi
    stream ライブラリへのつなぎ込みを試してます。 https://github.com/tkawachi/scalikejdbc-stream 今はストリーム作る時に ConnectionPool を渡してますが、適当でしょうか?アドバイスいただければ幸いです。
    Kazuhiro Sera
    @seratch
    まあそれ自体は特に問題はなさそうですね。
    Kazuhiro Sera
    @seratch
    74 票。
    今の所の考えとしては、時期はともかくアナウンスしやすいので 2.5 も含め 2.x は今のままで 3.x で Java8 以上としたいですね。で、2.5.x かどうかわからないけど 2.x の最終マイナーバージョンは 1.x と同様しばらくメンテナンスリリース対象。
    あとで en にも書く。
    kenji yoshida
    @xuwei-k
    Scala 2.12.0-RC1 でコンパイルしたら変な死に方してコンパイル通らなかったので、報告しておきました https://issues.scala-lang.org/browse/SI-9918
    Kazuhiro Sera
    @seratch
    おお、ありがとうございます。
    kenji yoshida
    @xuwei-k
    そしてそれによりこういう話が scala/community-builds#279
    Kazuhiro Sera
    @seratch
    お、こっちでなんかやるんでしたっけ。
    kenji yoshida
    @xuwei-k
    いや、むこうで勝手にやってくれるんじゃないですかね?場合によってはなにか聞かれるかもしれないけど
    kenji yoshida
    @xuwei-k
    scalaコンパイラのバグ、直ったっぽい
    xuwei-k/scalikejdbc@8a48c8f
    https://travis-ci.org/xuwei-k/scalikejdbc/builds/160631836
    kenji yoshida
    @xuwei-k
    SQLの予約語の場合に(MySQLだと)バッククォートで囲ってないといけない、とかかな。予約語以外のパターンでも囲っておいて方がいいんだっけ? http://shobon.hatenablog.com/entry/2014/03/16/142256 scalikejdbc/scalikejdbc#571 xuwei-k/scalikejdbc@174991c (← つまりこう?)
    そもそもSQLの予約語にscalikejdbc全体で考慮なんて基本してない気はする? (他のライブラリって対応してるのだろうか)
    ここでの自分の指摘により https://github.com/scalikejdbc/scalikejdbc/pull/427#issuecomment-119067511 必要以上に c.name.replace("`", "") を入れてしまったとか?
    Toshiyuki Takahashi
    @tototoshi
    mysqlの時は何も考えずに全部バッククォート入れるなあ
    kenji yoshida
    @xuwei-k
    MySQLしか考慮してないpull reqがきて、ちゃんと他のDBも対応しろ、と自分が指摘する未来を想像している
    jakelizzI
    @jakelizzI

    play scala 2.5 でpostgresqlとscalikejdbcを利用しようと思っているのですが、2点ほど質問があります。
    1.postgresqlのデータベース名がdefaultの時はうまくいくのですが、変更した場合は

    [IllegalStateException: Connection pool is not yet initialized.(name:'default)]

    が出てしまいます。データベース名を変更した場合はどのようにすればよろしいのでしょうか?

    1. ConnectionPoolにHikariCPを使用する場合は、BoneCPConnectionPoolのようなクラスを自作しなければならないのでしょうか?