Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jan 31 2019 21:30
    roji commented #2307
  • Jan 31 2019 20:35
    YohDeadfall commented #2307
  • Jan 31 2019 10:20
    capan starred npgsql/npgsql
  • Jan 31 2019 06:10
    SeanFarrow synchronize #2308
  • Jan 30 2019 20:37
    austindrenski commented #2308
  • Jan 30 2019 20:37
    pentagra commented #1445
  • Jan 30 2019 20:33
    SeanFarrow commented #2308
  • Jan 30 2019 20:31
    austindrenski commented #2308
  • Jan 30 2019 20:27
    SeanFarrow commented #2308
  • Jan 30 2019 20:09
    austindrenski labeled #2308
  • Jan 30 2019 20:05
    roji commented #1520
  • Jan 30 2019 19:50
    gyzod commented #1445
  • Jan 30 2019 19:06
    SeanFarrow commented #1520
  • Jan 30 2019 18:54
    roji commented #1520
  • Jan 30 2019 18:53
    roji commented #1520
  • Jan 30 2019 18:52
    roji commented #2050
  • Jan 30 2019 18:45
    Trolldemorted commented #2050
  • Jan 30 2019 18:21
    SeanFarrow commented #1520
  • Jan 30 2019 18:16
    SeanFarrow review_requested #2308
  • Jan 30 2019 18:16
    SeanFarrow review_requested #2308
Shay Rojansky
@roji
Let me find the link
Emill
@Emill
Should probably also investigate PG performance. I got this idea like yesterday.
Shay Rojansky
@roji
Here's some exploratory work I did - I took string_agg as a first attempt because it's simpler: npgsql/efcore.pg#1531
This is the work that led to dotnet/efcore#22957
Emill
@Emill
https://docs.microsoft.com/en-gb/ef/core/ ehm maybe remove the word "lightweight"? :)
Emill
@Emill
I guess I'll see if I can step-debug EF as I perform a LINQ query to get a grasp of what really happens.
Shay Rojansky
@roji
Good luck
Lightweight - compared to EF6 :)
Don't hesitate to reach out
Though we should probably take this kind of conversation to private chat or something
Vojtech Machacek
@vmachacek_gitlab
Hello, I wanted to ask when LTree functionality will be released? I was following the update with great anticipation and now we could use it on current project.
Shay Rojansky
@roji
@vmachacek_gitlab if you're referring to the EF Core support for ltree (npgsql/efcore.pg#1592), then that will go out with 6.0.0-preview1, which should be released sometime next week.
Vojtech Machacek
@vmachacek_gitlab
yes, that's what I had in mind, thanks for the info!
Weston
@ronnyek
I was literally going to ask the very same thing. Any ballpark idea of when thats something i could realistically use in prod? Wont hokd anyone to it.. just curious if thats a couple months thing or something different.
Shay Rojansky
@roji
EF previews are generally really stable, and bugs found on them are fixed quickly - so you may want to use 6.0.0-preview1 once that comes out next week. Otherwise 6.0.0 will be out in November.
Adam Quintana
@AwkEng
I'm looking for some tool recommendations for profiling my queries exported from EF Core's ToQueryString() method. I tried using PgAdmin's Query Tool, but it's doesn't seem to like the @ query parameters. Any recommendations are appreciated.
Shay Rojansky
@roji
I think PgAdmin should work, but that's really a very general PG question that's unrelated to Npgsql/EF
Adam Quintana
@AwkEng
PgAdmin doesn't like the "@__<parameter_name>_0='<parameter value>'" parameter declaration and not sure how to modify to make PgAdmin happy. I'm going to try some other DB tools. Since Npgsql is the intersection of PG and EF I was looking for some advice on what the pros use :).
Jean-Marc68
@Jean-Marc68
Hi. I don't know if I'm at the right place, but I try.
I migrate of PostgreSQL version and because of that an old application is not working anymore. Il founded it was not working because it has npgsql v.2.XX and it's not supported by PostgreSQL 13.2. Then I installed the nuget npgsql 5.0.3. There is somme differences I need to correct (for exemple, I had
catch (NpgsqlException NpgsqlEx)
{
if (NpgsqlEx.Code == "23505")
{
what it seems not being supported anymore. How do I need to do to find the code ?
And in the other hand, when I run the debug, on an error, when I try to see the error contents, everything seems to be written in chinese, japonise, or something else I can't reed.
Error Message : 㩤灜楧獮慴汬牥ㅟ⸳畡潴灜獯杴敲⹳楷摮睯⵳㙸尴牳屣慢正湥層潰瑳慭瑳牥灜獯浴獡整⹲?
I'm a little lost. What do I need to do ?
Shay Rojansky
@roji
I have no idea why your messages are in Chinese or Japanese :) But you need to catch PostgresException, not NpgsqlException (PostgresException is the exception thrown for errors reported by PostgreSQL, as opposed to errors raised by Npgsql itself). The property on that is SqlState (Code still exists but is obsolete)
Jean-Marc68
@Jean-Marc68
Thanks. I corrected NpgsqlException ton PostgresException and find SqlState. But exceptions are still in asiatic language. ='(
pm64
@pm64
The following is a valid Jsonpath in PG 12 but not 13: '[$.address.country, " ", $.address.city]'
Does anyone know the equivalent expression for PG 13?
Shay Rojansky
@roji
@pm64 you'll probably have better luck asking in a PostgreSQL forum/mailing list, your question has nothing to do with Npgsql/.NET
pm64
@pm64
@roji true, it was a shot in the dark
Is there a specific forum/mailing list you recommend?
Alberto Passalacqua
@AlbertoPa
@pm64 stackoverflow usually works (TM)
Shay Rojansky
@roji
The pgsql-help mailing list would be the PG place to go to
Stackoverflow is also generally good
pm64
@pm64
I can't deal with Stackoverflow, will try pgsql-help
Thanks @roji for the tip and for all you do
Sean
@DapperDeer
hey there, I'm getting this problem with npgsql and am very lost on how to fix it, googling doesn't really get me anywhere. I posted on StackOverflow but am impatient (and want to try multiple avenues) https://stackoverflow.com/questions/66340732/npgsql-attempted-to-read-past-the-end-of-the-stream
jongruk aripoo
@xchinjo
Hi all , How to fix "Npgsql.NpgsqlOperationInProgressException (0x80004005): A command is already in progress".
Jeremy Gamble
@GHosaPhat

Is there something I just haven't found within Npgsql that would make it possible for me to get a parsed "tree" of a SQL statement using Npgsql? Something that breaks down the statement into its individual clauses (SELECT, FROM, JOIN, WHERE, ORDER BY, etc.) with the "sub-elements" (e.g., the actual column list from the SELECT clause, or the specific conditions in the WHERE clause) exposed as well?

I'd really like to be able to parse an existing statement, modify one or more clauses (add an ORDER BY condition, alter the WHERE condition, etc.), then have it recompiled for execution so that I don't have to either rebuild the statement entirely or do some "funky" RegEx or String.Replace() calls to get the SQL I want in the end.

Admittedly, this is something of an "edge use" scenario. Using a .NET WinForms application, I'm pulling a SQL statement from a Crystal Reports .rpt document that I'm wanting to modify and push back into the document for the actual report generation. Like I said, I know I can do it manually, but I'd love to be able to do something like WHEREClause.Add("column1" = "'value'") or ORDERBYClause.Add("column2", .Ascending).
Jeremy Gamble
@GHosaPhat
I've tried working with a trial of the commercial General SQL Parser, but I've had limited success (not to mention the fact that I'm pretty sure I'm not going to get my boss to approve the cost of that library anyway) getting what I really want/need out of that in a way that's usable. I've also tried working with the Microsoft.SqlServer.Management.SqlParser.dll library, but that doesn't support PostgreSQL-specific syntax (e.g., string concatenation using ||).
Jeremy Gamble
@GHosaPhat
Other libraries I've tried seem to be either too generic or too specific (but, of course, not for PostgreSQL) to support the correct syntax for what I'm trying to accomplish. I really don't want to have to "roll my own" parser so, if I can't find a usable solution, I'll probably just "drop back and punt" and rebuild the statement instead. I just thought it'd be fantastic if a tool I'm already using could "solve" my issue. ;)
Jeremy Gamble
@GHosaPhat
If there isn't something like this exposed by Npgsql, perhaps this could serve as a feature request as a PostgreSQL "companion" to the Microsoft.SqlServer.Management.SqlParser.dll library?
Jeremy Gamble
@GHosaPhat

I'm trying to teach myself how to use ANTLR and their plsql grammar to (hopefully) get where I want to be but, as I said, it would be a lot nicer if I didn't have to go through all of that (or could, at least, eventually replace that).

I would assume that Npgsql does some sort of parsing at some level behind the scenes. I'm certainly not saying I think this request is "simple", but I would guess that there's at least a partial framework in place for some of the task.

Jeremy Gamble
@GHosaPhat

Well, after a week of trying to get ANTLR to a place I could at least do some testing, I've given up for now. If a feature like I've described eventually becomes available in Npgsql (or if it's already there and I'm just not able to find it) or, if it's available in some other library somewhere that I haven't yet found, I'd be thrilled to hear about it. In the meantime, I'm just going to have to rebuild the SQL statements I need as I go.

I've posted a question on StackOverflow to this effect (.NET Library to Parse/Modify/Reconstruct SQL Statement) but, as I stated before, I'd certainly prefer to have it as a part of the Npgsql library I'm already using for most of my database communication anyway. If anyone else here has any suggestions or thoughts, I'd be glad to hear them. Thanks.

James
@pha3z
https://www.npgsql.org/doc/prepare.html shows an example of two UPDATE statements. It explains that the individual statements are prepared. However, it doesn't clearly state if using multiple statements with a single prepare in one command is actually the best practice. What if I want to do 200 Updates or 200 Inserts? I put all 200 Updates in a single parameterized query and call Prepare() once followed by ExecuteQuery(). Is this the optimal way to do it? Would it perform differently if I created 1 single Update statement in one query, prepared it, executed.... and then put the remaining 199 in a second query without preparing it? I feel like it would help if I understood better what's happening under the hood.
Another example on the same page demonstrates Preparing a query, Executing it, then changing the parameters and Executing it again (in a loop possibly). But would be a poor practice for something like a series of UPDATES or INSERTS, right? Changing parameters and executing costs round-trip delay. Maybe some guidance on how to use prepare based on what KIND of operation you're doing would be helpful.
James
@pha3z
@GHosaPhat SQL parsing is special problem all of its own. SQL syntax varies depends on the db provider and the db provider does its own parsing. Npgsql doesn't need to concern itself with the SQL structure. Adding a parser to npgsql would add unnecessary code to maintain. Npgsql is an ado.net compliant postgres driver and nothing more. It should remain that way
Jeremy Gamble
@GHosaPhat
@pha3z Thank you for the response. While I understand this position, as I've stated, having a parse tree available from within Npgsql would make my life so much easier for the project I'm currently working on. I guess it's back to the frustration of trying to learn how to use ANTLR in a VB.NET application to accomplish my goals. Thank you again.
James
@pha3z
@GHosaPhat What do you need to do the parsing for? And is this a commercial project?
@GHosaPhat Oh nevermind. I went back and read your original problem statement. You have a SQL statement already constructed and you need to modify some clauses in it
Jeremy Gamble
@GHosaPhat
Yep. That's it. ;)
Like I said, I can do it "manually", but I was looking for something a bit more "flexible" and reusable for a long-term solution.
James
@pha3z
Is this a commercial project and is there an opportunity to outsource the work? I am a consultant. I have my own text tokenizer and my own postgres ddl parser. It would not be a big deal for me to write you a sql parser for postgres
Jeremy Gamble
@GHosaPhat
It's not a commercial project in that it isn't something that our company will be selling to others. It's for an internal system that I've been building for our employees to use.