[{"data":1,"prerenderedAt":455},["ShallowReactive",2],{"project-30794332":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":46,"post_text":48,"what":49,"said":85,"maker_in_thread":193,"shape":202,"grid":206,"attempts":413,"same_week":418,"maker_shows":43,"maker_hidden":447,"reader_version":448,"card":449},"30794332","Postgres.js","Fastest Full-Featured PostgreSQL Client for Node and Deno","title","Show HN: Postgres.js – Fastest Full-Featured PostgreSQL Client for Node and Deno","https:\u002F\u002Fgithub.com\u002Fporsager\u002Fpostgres","github.com","porsager",1648150203,2022,257,83,183,2570,8,"legend","languages","database driver library","library",[24,25,26,27,28],"postgresql","node.js","database driver","deno","sql client","mixed",0.377,{"positive":32,"neutral":33,"mixed":34,"critical":35},20,14,0,4,38,{"design":38,"docs":39,"idea":41,"execution":42,"performance":45},{"positive":18,"critical":34},{"positive":40,"critical":40},1,{"positive":40,"critical":34},{"positive":43,"critical":44},2,3,{"positive":43,"critical":34},[47,34,40,47,44,34,34,34,44,47,40,47,47,44,34,47,44,44,47,47,44,34,34,34,34,34,44,47,47,44,47,47,47,47,47,44,47,34,34,47],5,null,{"problem":50,"audience":57,"pricing":48,"motivation":66,"time_to_build":48,"stack":73,"openness":82,"stage":83,"team_size":84},{"value":51,"source":52,"evidence":53},"Offers a fast, feature-rich PostgreSQL driver with safe tagged template queries","maker",[54],{"id":55,"by":11,"text":56},"30794341","Hi everyone. A bit more than two years ago I released the first version of Postgres.js. A fully featured PostgreSQL driver for Node.js written as a learning experience out of…",{"value":58,"source":59,"evidence":60},"Node.js and Deno developers using PostgreSQL","inferred",[61,62],{"id":55,"by":11,"text":56},{"id":63,"by":64,"text":65},"30796529","keb_","Excellent work as usual, Rasmus! :) Loved my time with postgres.js in past projects, looking forward to checking out v3 in an upcoming project of mine. The speed and lack of any…",{"value":67,"source":52,"evidence":68},"Curiosity and annoyance with existing PostgreSQL options for Node",[69,70],{"id":55,"by":11,"text":56},{"id":71,"by":11,"text":72},"30799657","Thanks a lot. I did not built it with Typescript, just plain js - I don't use Typescript at all(not my cup of tee), but a kind soul (thanks @minigugus) contributed the typings ;)…",[74,78],{"value":75,"source":52,"evidence":76},"JavaScript",[77],{"id":71,"by":11,"text":72},{"value":79,"source":52,"evidence":80},"TypeScript typings",[81],{"id":71,"by":11,"text":72},"open_source","launched","solo",{"praise":86,"objections":110,"requests":132,"questions":153,"alternatives":174},[87,103],{"value":88,"source":89,"evidence":90},"Tagged template literal API is great developer experience","commenter",[91,95,99],{"id":92,"by":93,"text":94},"30794882","kiwicopple","Congrats on the release - as I mentioned on twitter, your templating design is the best DX i've seen for any PG client. > Inspired from Supabase Realtime you can now have it…",{"id":96,"by":97,"text":98},"30796608","rubyist5eva","nice!",{"id":100,"by":101,"text":102},"30799336","juhanakristian","This looks great! I really like the idea of using tagged template literals for queries.",{"value":104,"source":89,"evidence":105},"Fast performance and zero dependencies",[106,107],{"id":63,"by":64,"text":65},{"id":108,"by":11,"text":109},"30799499","There is quite a big difference, but I'll highlight some of the main points here. Note I'm the author of Postgres.js so I'm obviously biased. Slonik is a wrapper around another…",[111,122],{"value":112,"source":89,"evidence":113},"Performance claims over native pg-native questioned",[114,118],{"id":115,"by":116,"text":117},"30797094","pier25","How can this be so much faster than even pg-native that uses the C library libpq? https:\u002F\u002Fgithub.com\u002Fporsager\u002Fpostgres-benchmarks#results",{"id":119,"by":120,"text":121},"30799949","w1nk","On the surface I'm not sure this explanation passes the smell test. Almost irrespective of how you get the data from your network card into v8 \u002F nodejs, you're going to be…",{"value":123,"source":89,"evidence":124},"Missing binary protocol support for bytea",[125,129],{"id":126,"by":127,"text":128},"30796618","starsol","Is raw using binary protocol? (for ex: send\\receive UInt8Array Buffer without converting to hex string for bytea column)",{"id":130,"by":11,"text":131},"30796648","No, that unfortunately didn't make it into this release. I want to add that in a future update, first at least for bytea, but then also for other types that benefit from it.",[133,143],{"value":134,"source":89,"evidence":135},"Knex support",[136,140],{"id":137,"by":138,"text":139},"30798366","ruffrey","Thanks porsager. Any plans for Knex support?",{"id":141,"by":11,"text":142},"30799541","Yeah, I think it could make sense for performance reasons to make a version for Knex, but since I try to stay away from ORMs as much as possible I'm probably not the right one to…",{"value":144,"source":89,"evidence":145},"Expose rows as arrays",[146,150],{"id":147,"by":148,"text":149},"30795371","somebee","What a coincidence seeing this on HN. Great lib! I actually experimented with replacing our use of node-postgres with this today. Your lib was the reason I finally got around to…",{"id":151,"by":11,"text":152},"30795563","Thanks a lot! What a coincidence - and perfect timing since v3 supports .raw()[1] to receive results as arrays. I'd also be very curious to hear how replacing pg goes :) And also…",[154,166],{"value":155,"source":89,"evidence":156},"How it compares to slonik",[157,161,165],{"id":158,"by":159,"text":160},"30799262","elnygren","I’m curious, how does this project compare to slonik that is also a fast, lightweight, full featured, using SQL template literals etc ? Is there any reason to consider switching,…",{"id":162,"by":163,"text":164},"30796475","throwthere","Looks good from what I see. How does this compare with slonik? Also what do the error messages look like?",{"id":108,"by":11,"text":109},{"value":167,"source":89,"evidence":168},"Whether it is built in TypeScript",[169,173],{"id":170,"by":171,"text":172},"30797600","twomoonsbysurf","Super cool, looks great. Interesting to see you built it with Typescript. I was wondering-- and I know this is a long story, but I am curious: How does one go about building a…",{"id":71,"by":11,"text":72},[175,184,189],{"value":176,"source":89,"evidence":177},"pg (node-postgres)",[178,181],{"id":179,"by":11,"text":180},"30795000","Thanks - that's really nice to hear! That would be really interesting. Are you using `pg` currently, and are you using WebSocket connections in Node to Elixir for realtime, or…",{"id":182,"by":93,"text":183},"30795741","yes, we use `pg` in all our Node servers (and no realtime)",{"value":185,"source":89,"evidence":186},"Slonik",[187,188],{"id":158,"by":159,"text":160},{"id":108,"by":11,"text":109},{"value":190,"source":89,"evidence":191},"pg-native",[192],{"id":115,"by":116,"text":117},{"comments":194,"answered":195,"key":196},22,11,[197,198,199],{"id":55,"text":56},{"id":179,"text":180},{"id":200,"text":201},"30799926","Alright. I've got a pg wrapper lying around that can help with migration I can send you ;) I've DM'ed you on twitter, so let me know if that could be useful.",{"commenters":203,"max_depth":204,"maker_replies":194,"first_comment_mins":40,"lifespan_hours":205},40,7,206,[207,209,211,213,214,215,219,221,223,226,229,232,235,237,240,242,244,248,251,253,256,260,263,265,267,268,269,272,275,278,280,283,285,289,292,294,297,299,300,303,306,308,310,313,316,320,323,326,328,330,332,334,336,338,339,341,343,344,347,348,350,352,354,358,359,361,366,370,373,375,379,381,383,385,387,391,393,397,400,402,405,406,409],[55,34,34,208,11,40],"project\u002Fpositive\u002Fnone",[92,34,47,210,93,34],"project\u002Fpositive\u002Fdesign",[179,34,34,212,11,40],"commenter\u002Fneutral\u002Fnone",[182,34,34,212,93,34],[200,34,34,212,11,40],[216,34,40,217,218,34],"30797051","project\u002Fcritical\u002Fdocs","jadbox",[170,34,47,220,171,34],"project\u002Fpositive\u002Fidea",[71,34,34,222,11,40],"maker\u002Fneutral\u002Fnone",[224,34,44,222,225,34],"30799806","domlebo70",[227,34,34,212,228,34],"30800878","lukaszkups",[230,34,34,231,11,40],"30801712","other\u002Fneutral\u002Fnone",[233,34,34,231,234,34],"30802054","jamil7",[236,34,34,231,64,34],"30804328",[238,34,34,231,239,34],"30800911","Aeolun",[241,34,34,231,64,34],"30804300",[243,34,34,231,239,34],"30817052",[245,34,44,246,247,34],"30800049","project\u002Fneutral\u002Fexecution","aPoCoMiLogin",[249,34,34,250,11,40],"30800066","project\u002Fneutral\u002Fdocs",[252,34,47,208,247,34],"30800096",[254,40,47,210,255,34],"30799557","kamilafsar",[257,40,40,258,259,34],"30799944","project\u002Fcritical\u002Fexecution","ttty",[261,40,40,258,262,34],"30799983","Rygian",[264,40,34,246,11,40],"30800012",[266,40,47,210,64,34],"30804371",[147,43,47,208,148,34],[151,43,34,250,11,40],[270,43,47,271,148,34],"30801072","project\u002Fpositive\u002Fexecution",[273,43,34,274,11,40],"30801729","maker\u002Fpositive\u002Fnone",[276,44,40,258,277,34],"30798391","jordonias",[279,44,34,222,11,40],"30799998",[281,44,34,231,282,34],"30803558","lowwave",[284,44,34,246,11,40],"30886868",[286,35,47,287,288,34],"30799427","project\u002Fpositive\u002Fperformance","Existenceblinks",[290,35,34,291,11,40],"30799513","project\u002Fneutral\u002Fperformance",[293,35,44,291,288,34],"30799630",[295,47,44,296,97,34],"30796470","project\u002Fneutral\u002Fdesign",[298,47,34,296,11,40],"30796531",[96,47,47,210,97,34],[301,47,44,302,282,34],"30799619","project\u002Fneutral\u002Fnone",[304,47,47,305,282,34],"30800565","project\u002Fpositive\u002Fdocs",[115,307,44,291,116,34],6,[309,307,34,291,11,40],"30797102",[311,307,44,302,312,34],"30798257","white_dragon88",[314,307,34,212,315,34],"30798648","eropple",[317,307,34,318,319,34],"30797605","other\u002Fneutral\u002Fperformance","jerrysievert",[321,307,34,318,322,34],"30799025","eyelidlessness",[324,307,34,325,120,34],"30799976","commenter\u002Fneutral\u002Fperformance",[327,307,34,325,11,40],"30800044",[329,307,34,318,319,34],"30801029",[331,307,34,318,319,34],"30801005",[333,307,34,325,120,34],"30803989",[335,307,34,325,319,34],"30805195",[337,307,34,318,322,34],"30808470",[119,307,34,325,120,34],[340,307,34,325,319,34],"30800924",[158,204,44,342,159,34],"project\u002Fneutral\u002Fidea",[108,204,34,291,11,40],[345,204,47,210,346,34],"30799878","sdoering",[63,18,47,208,64,34],[349,18,34,274,11,40],"30819176",[126,351,44,291,127,34],9,[130,351,34,353,11,40],"maker\u002Fneutral\u002Fperformance",[355,356,47,210,357,34],"30795361",10,"whenlambo",[162,195,44,302,163,34],[360,195,34,353,11,40],"30796569",[362,363,47,364,365,34],"30801778",12,"maker\u002Fpositive\u002Fexecution","joshxyz",[367,368,44,296,369,34],"30799599",13,"gmac",[371,33,47,208,372,34],"30802497","ecmascript",[100,374,47,210,101,34],15,[376,377,44,246,378,34],"30796892",16,"999900000999",[380,377,34,364,11,40],"30796981",[382,377,47,208,378,34],"30797802",[384,377,34,222,11,40],"30799521",[386,377,44,302,378,34],"30802380",[388,389,47,210,390,34],"30800622",17,"fabiospampinato",[137,392,44,302,138,34],18,[394,392,34,395,396,34],"30799410","commenter\u002Fneutral\u002Fdesign","hn_throwaway_99",[398,392,34,395,399,34],"30800943","spiffytech",[401,392,34,212,396,34],"30802178",[403,392,34,404,357,34],"30809213","commenter\u002Fpositive\u002Fdesign",[141,392,34,222,11,40],[407,392,47,287,408,34],"30799958","danielskogly",[410,411,47,208,412,34],"30796249",19,"mpfundstein",[414,417],{"id":415,"t":416,"points":33,"comments":363},"21864245",1577115470,{"id":4,"t":12,"points":14,"comments":15},[419,424,428,433,438,443],{"id":420,"name":421,"points":422,"category":423},"30824357","Networks from Scratch",792,"learning_science",{"id":425,"name":426,"points":427,"category":423},"30787290","Bionic Reading",410,{"id":429,"name":430,"points":431,"category":432},"30844149","Blog Surf",389,"productivity",{"id":434,"name":435,"points":436,"category":437},"30811648","pianos",297,"consumer_social",{"id":439,"name":440,"points":441,"category":442},"30830749","Caddy-SSH",280,"infrastructure",{"id":444,"name":445,"points":446,"category":423},"30836647","Visualize SQL Queries",259,false,"v2",{"id":450,"name":5,"line":6,"ai":447,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":451,"top":18,"kw":452,"maker":11,"domain":10,"tier":19,"attempts":43,"strip":453,"url":9,"mix":454,"praise":88,"objection":112,"sub":21},30794332,0.38,[24,25,26,27,28],"5015300035155305335530000035535555535005",[32,33,34,35],1794036618455]