@pwernersbach - That's a really cool project, and I'm glad that you shared it! 
I love that you use the 'not nil' annotations for your argument types and type 
definitions, and I've enjoyed reading through it, even though I'm not currently 
using InfluxDB.

I hope you don't mind a few questions, but I'd really like to learn more about 
how Nim is used "in the wild" since I'm using it for my own projects and would 
love to learn more best practices.

  * Could you talk a bit about the 
[useDB](https://github.com/philip-wernersbach/influx-mysql/blob/580d0b2dcbb2de31d1745b144c34dc003deabdda/influx_mysql/src/influx_mysql_backend.nim)
 macro? I can see that it's a try-with-resources for the DB connection, but 
could this be done as a template (like the 'withFile' example in the manual?) 
Is using the immediate pragma needed so that you don't have to mark all of the 
parameters as 'untyped', or are you doing that for the overloading resolution?
  * How did using nimprof work for you? Is that why / how you have the 
GC_disable and GC_enable in critical parts?
  * The problem you point to with refcounting and long link lists seems bad and 
I definitely see the rationale for reflists - it looks like you're using 
finalizers with ReadLinesFutureContext and its 'super' to manage cleanup - have 
you had any problems with finalizers? I'm not sure I've seen another project 
using Nim finalizers in production, and the 
[manual](http://forum.nim-lang.org///nim-lang.org/docs/manual.html#type-bound-operations-destructors)
 talks about using destructors differently, so I'm not sure if the new(foo, 
destructor) is here to stay or not.
  * In your 
[splitIndividualStatements](https://github.com/philip-wernersbach/influx-mysql/blob/master/influx_mysql/src/influxql_to_sql.nim#L97)
 iterator, you're checking for 'SELECT' character-by-character - could you do 
something like 
    
        if stmts[pos + 1 .. pos + 6] == "SELECT":
         # Do whatever work here
         discard
       

or was there a performance difference in doing character-at-a-time approach?


Reply via email to