00:05:17  * thlorenzjoined
00:07:34  * thlorenzquit (Remote host closed the connection)
00:09:43  * Sorellajoined
00:25:04  * daviddiasjoined
00:29:33  * daviddiasquit (Ping timeout: 245 seconds)
00:38:49  * fritzyquit (Remote host closed the connection)
01:06:40  * dguttmanquit (Quit: dguttman)
01:10:41  * ryanjquit (Ping timeout: 252 seconds)
01:22:58  * ramitosquit (Ping timeout: 240 seconds)
01:45:06  * ramitosjoined
01:48:57  * fritzyjoined
01:52:51  * ryan_ramagejoined
01:57:18  * fritzyquit (Remote host closed the connection)
02:13:24  * daviddiasjoined
02:17:53  * daviddiasquit (Ping timeout: 245 seconds)
02:18:50  * ryanjjoined
02:26:18  * ryanjquit (Ping timeout: 240 seconds)
02:31:25  * thlorenzjoined
02:38:10  * thlorenzquit (Remote host closed the connection)
02:43:26  * ryan_ramagequit (Quit: ryan_ramage)
02:55:16  * Sorellaquit (Quit: It is tiem!)
03:33:24  * ryan_ramagejoined
04:01:26  * daviddiasjoined
04:05:30  * daviddiasquit (Ping timeout: 240 seconds)
04:20:26  * fritzyjoined
04:25:13  * dguttmanjoined
04:44:39  * dguttmanquit (Quit: dguttman)
04:48:08  * ryan_ramagequit (Quit: ryan_ramage)
04:54:50  * ryan_ramagejoined
05:02:49  * fritzyquit (Remote host closed the connection)
05:09:49  * brianloveswordsjoined
05:11:15  * keslajoined
05:19:00  * ryan_ramagequit (Quit: ryan_ramage)
05:19:31  * ryan_ramagejoined
05:19:54  * ryan_ramagequit (Client Quit)
05:20:28  * ryan_ramagejoined
05:20:46  * ryan_ramagequit (Client Quit)
05:21:23  * ryan_ramagejoined
05:21:37  * ryan_ramagequit (Client Quit)
05:22:25  * ryan_ramagejoined
05:22:37  * ryan_ramagequit (Client Quit)
05:23:12  * ryan_ramagejoined
05:23:29  * ryan_ramagequit (Client Quit)
05:31:14  * fritzyjoined
05:50:05  * daviddiasjoined
05:54:29  * daviddiasquit (Ping timeout: 252 seconds)
05:58:18  * keslaquit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
06:07:56  * ryanjjoined
06:10:47  <rvagg>https://github.com/rvagg/node-leveldown/pull/96#issuecomment-42921022 iterator perf improvements in leveldown by @kesla y'all should be aware of
06:14:48  * fritzyquit (Remote host closed the connection)
06:36:27  <ogd>rvagg: whaaaaaaa!!!
06:37:30  <rvagg>mainly a gain for smaller k/v sets, but that tends to be a lot of what we do with level* anyway
06:45:32  * domanicjoined
07:07:38  * lithiumjakequit (Ping timeout: 240 seconds)
07:12:51  * ramitosquit (Remote host closed the connection)
07:13:53  * ramitosjoined
07:19:12  * brianloveswordsquit (Quit: Computer has gone to sleep.)
07:38:19  * daviddiasjoined
07:42:38  * daviddiasquit (Ping timeout: 240 seconds)
07:49:46  * contrahaxjoined
08:03:44  * plumajoined
08:03:44  * plumaquit (Changing host)
08:03:44  * plumajoined
08:32:08  * contrahaxquit (Quit: Sleeping)
08:32:22  * daviddiasjoined
08:35:42  * daviddia_joined
08:39:45  * daviddiasquit (Ping timeout: 276 seconds)
09:10:34  * daviddia_quit (Remote host closed the connection)
09:18:55  * daviddiasjoined
09:22:49  * kenan|afkchanged nick to kenansulayman
09:37:20  * kenansulaymanchanged nick to kenan|afk
09:42:16  * kenan|afkchanged nick to kenansulayman
11:51:07  * contrahaxjoined
12:53:51  * contrahaxquit (Read error: Connection reset by peer)
12:54:57  * contrahaxjoined
12:55:27  * mhernandez1joined
13:00:46  * contrahaxquit (Read error: Connection reset by peer)
13:01:07  * contrahaxjoined
13:07:12  * mhernandez1quit (Remote host closed the connection)
13:11:10  * daviddiasquit
13:13:29  * mhernandez1joined
13:29:05  * ryan_ramagejoined
13:30:04  * thlorenzjoined
13:37:45  * ryan_ramagequit (Quit: ryan_ramage)
13:45:19  <domanic>juliangruber, idea: automagic sql
13:45:33  <domanic>you put all the tables into sublevels
13:46:03  <domanic>and automatically join them.
13:46:13  <domanic>based on conventions
13:46:22  <domanic>you'd just have to say what conventions you use.
13:46:50  <domanic>so... if you have Customer table
13:46:51  <juliangruber>domanic: can you write some pseudo code how this would be used?
13:47:07  <domanic>and then you have Purchase table which has CustomerID
13:47:16  <juliangruber>aaah
13:47:25  <domanic>then you just say Customer join Purchase
13:47:26  <juliangruber>like conventional foreign keys
13:47:58  <domanic>and it would be like, well there is no Customer.PurchaseID, so I'll try Purchase.CustomerID
13:48:28  <domanic>just check if a left join will be possible, else do a right join!!! MAGIC
13:48:42  <domanic>returns a JSON tree
13:48:58  <domanic>Customer: Purchases: [...]
13:51:03  <juliangruber>yeah
13:51:05  <juliangruber>that would be cool
13:51:06  <domanic>If there is a {field}ID table, but there is no {field} table, that might be a self reference
13:51:23  <domanic>like ManagerID points back to the employee table
13:51:44  <juliangruber>what would happen if you mixed the key direction? e.g. if there would be some customers with a purchaseid and some purchases with a customerid?
13:52:03  <juliangruber>might just be a weird edge case
13:52:24  <domanic>that would tear the fabric of relational reality.
13:52:52  <domanic>but that is why we have no sql. maybe just do both?
13:53:33  <juliangruber>yeah
13:53:51  <juliangruber>and this needs an implicit index of all {field}ID keys
13:54:05  <domanic>just use level-search and index everything.
13:54:17  <domanic>then you can query by any parameter.
13:54:58  <domanic>the other case is many many joins
13:55:10  <domanic>but that just means there is an intermediate join table.
13:56:15  <domanic>so it's just a left join combined with a right join.
13:56:36  <juliangruber>so it would also look for a customer-purchase table
13:56:40  <juliangruber>*sublevel
13:56:43  <juliangruber>or something like that
13:57:48  * ryan_ramagejoined
13:58:05  <domanic>good point
13:58:48  <juliangruber>i like the conventional approach
13:58:48  <juliangruber>haha
13:59:17  <domanic>although, I havn't encounted that case recently
13:59:43  * dguttmanjoined
14:00:35  <juliangruber>could be cool
14:00:45  <juliangruber>trying to think through how it would feel in an app
14:01:18  <juliangruber>it shouldn't index on a property by mistake
14:01:37  <juliangruber>so foreign keys must be obvious enough, or you shouldn't use the convention by mistake
14:04:51  <domanic>yeah, that could make some weird data. you'd need to validate incoming data...
14:04:59  <domanic>but it would make queries very easy...
14:05:33  <domanic>you could just chuck data in, and it could detect relationships...
14:05:47  <juliangruber>the api could be db.find('customer', { product: '<id>' })
14:06:16  <juliangruber>db.find('purchase', { customer: '<id>' })
14:06:31  <domanic>what would you expect that to return?
14:07:01  * ryan_ramagequit (Ping timeout: 252 seconds)
14:10:52  * ryan_ramagejoined
14:11:07  * contrahaxquit (Read error: Connection reset by peer)
14:11:17  * contrahaxjoined
14:11:32  * jjmalinajoined
14:11:33  * jjmalinaquit (Max SendQ exceeded)
14:12:01  * jjmalinajoined
14:16:05  * ryan_ramagequit (Ping timeout: 252 seconds)
14:18:11  * thlorenzquit (Remote host closed the connection)
14:19:13  * thlorenzjoined
14:19:41  <domanic>juliangruber, it's about this complex: https://gist.github.com/dominictarr/c7231fc473b12855d640
14:19:52  <juliangruber>domanic: a stream
14:20:21  <juliangruber>aaah, the join is a transform stream
14:20:21  <juliangruber>nice
14:20:35  <domanic>yeah
14:20:36  <juliangruber>yeah that looks good
14:21:08  <juliangruber>https://gist.github.com/dominictarr/c7231fc473b12855d640#file-level-magic-js-L19
14:21:13  <juliangruber>this should create a readStream
14:21:23  <juliangruber>right?
14:23:33  <domanic>no, if that is a one:one join
14:23:59  <domanic>a row has an id of a fk, so it can only point to one record.
14:25:19  <juliangruber>aaah gotcha
14:25:20  <juliangruber>yeah
14:25:34  <juliangruber>still needs many many right?
14:26:51  <domanic>yeah, that is certainly more complicated
14:27:05  <domanic>maybe if you just specify all the tables?
14:27:30  <domanic>Customer -> CustomerSalesRep -> SalesRep
14:28:12  <domanic>hey that would mean you could do recursive joins too...
14:28:30  <domanic>Employeee -> Manager -> Manager
14:28:48  <domanic>you'd just call back to the original method again...
14:29:31  <domanic>just have some syntax that means repittion
14:30:13  <domanic>maybe (Employee, Manager, 3) goes back a maximum 3 levels, but -1 goes back as far as possible...
14:30:14  * brianloveswordsjoined
14:33:52  * jjmalinaquit (Read error: Connection reset by peer)
14:34:39  * jerrysvjoined
14:37:25  * ryan_ramagejoined
14:41:03  <juliangruber>another problem: sublevels aren't known after restarting the process
14:41:11  <juliangruber>so it has to scan first
14:41:16  <juliangruber>with sublevel-tree or something like that
14:41:29  <juliangruber>(still thinking about the above)
14:41:38  * ednapiranhajoined
14:41:51  <domanic>yeah,
14:42:00  <juliangruber>recursive joins would be kick ass
14:42:12  <juliangruber>that would mean the system is well thought through
14:42:17  <domanic>if this was based on a bulkload of an SQL database, then you'd read that from the schema
14:42:21  <juliangruber>and can be simple
14:43:32  <juliangruber>i think instead of passing levels it should be explicit: db.find('Employee', {id:13}, ['Manager', 'Manager'])
14:44:15  <domanic>yeah I want something that can be expressed as a url easy enough
14:45:34  <domanic>Employee/Manager/Manager?id=13
14:45:39  <domanic>or
14:45:53  <domanic>Employee/Manager/Manager?Manager.Manager.id=13
14:46:20  <domanic>for all the employees that are managed my managers under manager 13
14:46:40  <domanic>you could do this by scanning all employees (bad)
14:47:09  <domanic>or detecting that the tightest selection is on the 3rd level manager, and then working back with right joins
14:47:26  <domanic>but nesting the result inside out instead of inside out.
14:47:52  <domanic>OKAY here is a problem.
14:48:11  <domanic>say you want all the employees under a manager?
14:48:18  <domanic>Manager/Employee is wrong
14:48:34  <domanic>because the manager is just in the Employee table.
14:48:55  <domanic>so this is a left self join.
14:49:19  <domanic>youd have to have a special syntax for this...
14:49:56  <domanic>Employee-Manager/Employee or something
14:53:13  <domanic>hmm, actually level-search does reverse indexes
14:54:19  <domanic>hmm, you might have to know that Manager is a self link ... and you could tell that by reading the schema or profiling the data...
15:16:15  * contrahaxquit (Ping timeout: 276 seconds)
15:21:51  * contrahaxjoined
15:24:12  * jerrysv_joined
15:25:52  * jerrysvquit (Read error: Connection reset by peer)
15:26:14  * jerrysv_changed nick to jerrysv
15:27:56  * binocarlosjoined
15:32:58  * dguttmanquit (Quit: dguttman)
15:33:41  * fritzyjoined
15:35:11  * dguttmanjoined
15:36:16  * plumaquit (Read error: Connection reset by peer)
15:39:00  * fritzyquit (Ping timeout: 276 seconds)
15:39:55  * fritzyjoined
15:42:55  <domanic>juliangruber, okay the database that I am working with follows conventions pretty well, and this actually works!
15:43:07  <domanic>I havn't implemented any configurations yet...
15:48:21  * nnnnathannjoined
16:03:17  * contrahaxquit (Ping timeout: 264 seconds)
16:04:58  * jerrysvquit (Remote host closed the connection)
16:07:45  * contrahaxjoined
16:16:35  <domanic>oh... I think I'm just inventing SQL here...
16:18:18  <domanic>you can certainly make the default case really simple (which is what ORMs do)
16:18:31  <domanic>but then there are the complex cases, they can't be made simple.
16:21:14  * contrahaxquit (Ping timeout: 240 seconds)
16:25:13  * contrahaxjoined
16:26:53  * thlorenzquit (Remote host closed the connection)
16:35:45  * jerrysvjoined
16:54:14  * nnnnathannquit (Remote host closed the connection)
16:56:55  * kenansulaymanchanged nick to kenan|afk
17:01:38  * jjmalinajoined
17:13:47  * plumajoined
17:26:02  * wolfeidauquit (Remote host closed the connection)
17:26:27  * wolfeidaujoined
17:33:57  <fritzy>rvagg: could the leveldown improvements be applied to rocks and others?
17:48:58  * ryanjquit (Ping timeout: 240 seconds)
17:52:17  <hij1nx>ok -- just started on this, a c++ version of lev -- https://github.com/hij1nx/ldb
17:56:55  * fritzyquit (Remote host closed the connection)
17:57:49  * fritzyjoined
17:57:52  * fritzyquit (Remote host closed the connection)
18:00:28  * fritzyjoined
18:05:09  * ryanjjoined
18:05:34  * plumaquit (Ping timeout: 265 seconds)
18:19:35  * thlorenzjoined
18:22:43  * plumajoined
18:22:43  * plumaquit (Changing host)
18:22:43  * plumajoined
18:35:17  * contrahaxquit (Read error: Connection reset by peer)
18:36:25  * contrahaxjoined
18:38:40  * ham27changed nick to tec27
18:48:12  * fritzyquit (Remote host closed the connection)
18:55:10  * ryan_ramagequit (Quit: ryan_ramage)
18:56:41  * fritzyjoined
19:00:44  * contrahaxquit (Read error: Connection reset by peer)
19:01:12  * ryan_ramagejoined
19:03:09  * contrahaxjoined
19:08:21  * contrahaxquit (Read error: Connection reset by peer)
19:08:58  * contrahaxjoined
19:09:58  * plumaquit (Ping timeout: 245 seconds)
19:22:53  * contrahaxquit (Read error: Connection reset by peer)
19:25:26  * contrahaxjoined
19:39:58  * contrahaxquit (Ping timeout: 245 seconds)
19:48:35  * contrahaxjoined
19:57:03  * fritzyquit
19:57:21  * fritzyjoined
20:43:15  * sygijoined
20:45:17  * jerrysvquit (Remote host closed the connection)
20:47:53  * jerrysvjoined
21:09:03  * tmcwjoined
21:22:08  * mhernandez1quit (Remote host closed the connection)
21:33:17  * fritzyquit
21:50:44  * tmcwquit
21:51:55  * contrahaxquit (Read error: Connection reset by peer)
21:52:17  * contrahaxjoined
21:52:22  <contrahax>weird
21:55:45  * ramitosquit (Remote host closed the connection)
22:03:26  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:16:23  * brianloveswordsjoined
22:23:56  * sxquit (Ping timeout: 252 seconds)
22:24:24  * aredridelchanged nick to Aria
22:26:35  * brianloveswordsquit (Quit: Computer has gone to sleep.)
22:34:18  * contrahaxquit (Ping timeout: 240 seconds)
22:35:35  * contrahaxjoined
22:36:25  * brianloveswordsjoined
22:38:58  * contraha_joined
22:40:51  * contrahaxquit (Ping timeout: 276 seconds)
22:41:34  * contraha_quit (Read error: Connection reset by peer)
22:42:06  * contrahaxjoined
22:52:27  * sygiquit (Quit: Connection closed for inactivity)
22:58:55  * contrahaxquit (Remote host closed the connection)
22:59:23  * Sorellajoined
23:01:13  * contrahaxjoined
23:08:35  * contrahaxquit (Ping timeout: 252 seconds)
23:13:54  * ryan_ramagequit (Ping timeout: 240 seconds)
23:16:24  * contrahaxjoined
23:16:58  * contrahaxquit (Client Quit)
23:18:30  * fritzyjoined
23:20:14  * jjmalinaquit (Ping timeout: 240 seconds)
23:23:05  * domanicquit (Ping timeout: 264 seconds)
23:29:53  <rvagg>fritzy: the forks, yes, not lmdb because that requires more work
23:30:45  <fritzy>*nod*
23:41:41  * jerrysvquit (Remote host closed the connection)
23:45:45  * jerrysvjoined
23:49:54  * jerrysvquit (Ping timeout: 240 seconds)
23:54:52  * thlorenzquit (Remote host closed the connection)