[{"data":1,"prerenderedAt":244},["ShallowReactive",2],{"project-18776589":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":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":40,"post_text":41,"what":42,"said":80,"maker_in_thread":144,"shape":150,"grid":153,"attempts":208,"same_week":209,"maker_shows":39,"maker_hidden":236,"reader_version":237,"card":238},"18776589","Pg-extend-rs","Easy Postgres extensions in Rust","title","Show HN: Pg-extend-rs – Easy Postgres extensions in Rust","https:\u002F\u002Fbluejekyll.github.io\u002Fblog\u002Frust\u002F2018\u002F12\u002F27\u002Fannouncing-pg-extend.html","bluejekyll.github.io","bluejekyll",1546003998,2018,244,22,130,2155,7,"notable","infrastructure","database extension framework","library",[24,25,26,27],"postgres extensions","rust","postgresql","pg extension","loved",0.353,{"positive":31,"neutral":32,"mixed":33,"critical":33},5,3,0,8,{"idea":36,"performance":38},{"positive":37,"critical":33},4,{"positive":39,"critical":33},1,[31,33,33,33,33,33,33,33,33,33,32,33,31,31,32,31,31,33,33,33,32,33],null,{"problem":43,"audience":53,"pricing":41,"motivation":61,"time_to_build":41,"stack":67,"openness":77,"stage":78,"team_size":79},{"value":44,"source":45,"evidence":46},"Writing Postgres extensions in C is hard; the library makes Rust extensions easier","maker",[47,49],{"id":48},"post",{"id":50,"by":51,"text":52},"18777689","rtpg","Ohhh this is great! I have had a query planner extension idea for a while but dealing with C bugged me a lot. I think that this might help me try some Rust ans some Postgres",{"value":54,"source":55,"evidence":56},"Developers who want to write Postgres extensions in Rust","inferred",[57,58],{"id":50,"by":51,"text":52},{"id":59,"by":11,"text":60},"18777715","As warning, there’s still a bunch of work to translate various types from Rust to Postgres Datums. I’m interested in feedback on the library, so if you use it and experience any…",{"value":62,"source":45,"evidence":63},"Maker expects Rust extensions to be faster than PL\u002FpgSQL and to access the Rust ecosystem",[64],{"id":65,"by":11,"text":66},"18776990","I expect extensions in Rust will be much faster than those written in pgSQL, which would need to be interpreted, of course this should be validated. In addition to that, this is…",[68,73],{"value":69,"source":45,"evidence":70},"Rust",[71,72],{"id":48},{"id":65,"by":11,"text":66},{"value":74,"source":45,"evidence":75},"PostgreSQL",[76],{"id":48},"open_source","beta","unknown",{"praise":81,"objections":94,"requests":105,"questions":110,"alternatives":125},[82,87],{"value":83,"source":84,"evidence":85},"Excited to try Rust and Postgres via the library, replacing C pain","commenter",[86],{"id":50,"by":51,"text":52},{"value":88,"source":84,"evidence":89},"Inspires new extension ideas such as full text search and fake data generation",[90],{"id":91,"by":92,"text":93},"18777037","Dowwie","Curious how tantivvy performs for full text search, in comparison with the native one. This work inspires me. I am going to try to make a fake-rs extension to enable fake data…",[95,99],{"value":96,"source":45,"evidence":97},"Rust types still need translating to Postgres Datums, so it is incomplete",[98],{"id":59,"by":11,"text":60},{"value":100,"source":45,"evidence":101},"Rust-to-C string conversion may add some overhead",[102],{"id":103,"by":11,"text":104},"18776958","Right now, the only additional overhead I can think of would be on transforms from Rust style Strings and &str's to C style CString and CStr's. Beyond that, I think it should be…",[106],{"value":107,"source":45,"evidence":108},"Maker asks for feedback and issue reports from users",[109],{"id":59,"by":11,"text":60},[111,118],{"value":112,"source":84,"evidence":113},"What is the purpose compared to a PL\u002FpgSQL function?",[114],{"id":115,"by":116,"text":117},"18776943","MuffinFlavored","What's the purpose of this? Why this over a function in PL\u002FpgSQL?",{"value":119,"source":84,"evidence":120},"Does it add overhead compared to C\u002FC++?",[121],{"id":122,"by":123,"text":124},"18776937","InGodsName","Does it have additional overheard compared to rolling in C\u002Fc++?",[126,130,137],{"value":127,"source":84,"evidence":128},"PL\u002FpgSQL",[129],{"id":115,"by":116,"text":117},{"value":131,"source":84,"evidence":132},"Writing extensions in C",[133],{"id":134,"by":135,"text":136},"18778533","derefr","That's a funny comparison. The much more obvious contrast would be to writing a Postgres extension in C. Or are you asking, \"why have native DBMS extensions at all?\" Looking at…",{"value":138,"source":84,"evidence":139},"Python or JavaScript (V8) Postgres bindings",[140],{"id":141,"by":142,"text":143},"18777165","paulddraper","PostgreSQL has several bindings, including Python and JavaScript (V8). You might want to do complex value manipulation at the DB-level, like a regex-like operation, or processing…",{"comments":32,"answered":145,"key":146},2,[147,148,149],{"id":59,"text":60},{"id":65,"text":66},{"id":103,"text":104},{"commenters":151,"max_depth":37,"maker_replies":32,"first_comment_mins":152,"lifespan_hours":18},18,19,[154,156,158,162,165,169,172,176,179,182,184,186,187,188,192,193,196,197,200,203,205,207],[50,33,31,155,51,33],"project\u002Fpositive\u002Fidea",[59,33,33,157,11,39],"maker\u002Fneutral\u002Fexecution",[159,39,33,160,161,33],"18776677","other\u002Fneutral\u002Fnone","sjroot",[163,39,33,160,164,33],"18776744","FBISurveillance",[166,39,33,167,168,33],"18776879","commenter\u002Fneutral\u002Fnone","ddorian43",[170,39,33,167,171,33],"18778750","staticassertion",[173,39,33,174,175,33],"18776966","other\u002Fpositive\u002Fnone","reacharavindh",[177,39,33,160,178,33],"18776971","steveklabnik",[180,39,33,160,181,33],"18777167","joel_dice",[183,39,33,160,92,33],"18777851",[115,145,32,185,116,33],"project\u002Fneutral\u002Fidea",[65,145,33,155,11,39],[91,145,31,155,92,33],[189,145,31,190,191,33],"18777162","project\u002Fpositive\u002Fperformance","nicoburns",[141,145,32,185,142,33],[194,145,31,155,195,33],"18777644","TrueDuality",[134,145,31,155,135,33],[198,145,33,167,199,33],"18779274","joevandyk",[201,145,33,167,202,33],"18779306","the_duke",[204,145,33,167,135,33],"18779332",[122,32,32,206,123,33],"project\u002Fneutral\u002Fperformance",[103,32,33,206,11,39],[],[210,215,219,223,228,232],{"id":211,"name":212,"points":213,"category":214},"18776496","rrweb",353,"dev_tools",{"id":216,"name":217,"points":218,"category":214},"18789268","Vector Logo Zone",275,{"id":220,"name":221,"points":222,"category":214},"18787777","Bake",132,{"id":224,"name":225,"points":226,"category":227},"18798209","Snigl",87,"languages",{"id":229,"name":230,"points":231,"category":227},"18790255","LJS",77,{"id":233,"name":234,"points":235,"category":214},"18794928","Autumn",75,false,"v2",{"id":239,"name":5,"line":6,"ai":236,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":240,"top":18,"kw":241,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":242,"url":9,"mix":243,"praise":83,"objection":96,"sub":21},18776589,0.35,[24,25,26,27],"5000000000305535500030",[31,32,33,33],1794036573082]