Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HasRows fails to detect rows #3018

Open
wilfre opened this issue Nov 18, 2024 · 0 comments
Open

HasRows fails to detect rows #3018

wilfre opened this issue Nov 18, 2024 · 0 comments
Labels
🆕 Triage Needed For new issues, not triaged yet.

Comments

@wilfre
Copy link

wilfre commented Nov 18, 2024

Describe the bug

For queries that do have records, SqlDataReader.HasRows method returns false when the DB returns more than 1 InfoMessageToken, before sending a RowToken, HasRows assumes no records are left, and returns false even though it should have been true.

Using a db that returns two infomessages in the beginning is enough to reproduce the behavior.

string connectionString = "....";
var conn = new SqlConnection(connectionString);
conn.Open();

conn.InfoMessage += (sender, e) => Console.WriteLine(e.Message);

var cmd = conn.CreateCommand();
cmd.CommandText = "PRINT('1');SELECT * FROM t1";
using (var dr = cmd.ExecuteReader())
{
    Console.WriteLine($"HasRows: {dr.HasRows}"); // will return false if 2 infoMessages are sent by the DB.
    while (dr.Read())
    {
        Console.WriteLine(dr[0]);
    }

}

Expected behavior

HasRows shoud return true.

Additional context
When trying to identify the issue we encounter that this should probably be a while instead of an if statement.

@cheenamalhotra cheenamalhotra added the 🆕 Triage Needed For new issues, not triaged yet. label Nov 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🆕 Triage Needed For new issues, not triaged yet.
Projects
None yet
Development

No branches or pull requests

2 participants