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

Max DSS Size #2

Closed
raphgauthier opened this issue Jun 10, 2019 · 2 comments
Closed

Max DSS Size #2

raphgauthier opened this issue Jun 10, 2019 · 2 comments

Comments

@raphgauthier
Copy link
Contributor

Hi,

i have encountered an error while querying in a large database. When I run

cur.execute(""" SELECT <col> FROM <table> """)

I get the following error :

AssertionError                            Traceback (most recent call last)
<ipython-input-3-592b61ee4a58> in <module>
   1 cur = connection.cursor()
   2 try:
----> 3     cur.execute(""" SELECT <col> FROM <table> """)
   4 except drda.OperationalError:
   5     pass

/opt/conda/lib/python3.7/site-packages/drda/cursor.py in execute(self, query, args)
  60         self.query = query32776
  61         if query.strip().split()[0].upper() == 'SELECT':
---> 62             self._rows, self.description = self.connection._query(self.query, args)
  63         else:
  64             self.connection._execute(self.query, args)

/opt/conda/lib/python3.7/site-packages/drda/connection.py in _query(self, query, args)
 364                 cur_id, False, True
 365             )
--> 366             rows, description, params_description = self._parse_response()
 367             return rows, description
 368 

/opt/conda/lib/python3.7/site-packages/drda/connection.py in _parse_response(self)
  45         err_msg = None
  46         while chained:
---> 47             dds_type, chained, number, code_point, obj = ddm.read_dds(self.sock)
  48             print("dds_type:", dds_type, "chained:", chained, "number:", number, "code_point:", code_point)
  49             if code_point == cp.SQLERRRM:
sql
/opt/conda/lib/python3.7/site-packages/drda/ddm.py in read_dds(sock)
 239     print("b[3]", b[3])
 240 
--> 241     assert int.from_bytes(obj[:2], byteorder='big') == ln - 6
 242     code_point = int.from_bytes(obj[2:4], byteorder='big')
 243 

AssertionError:

At the time it fails into AssertionError, obj[:2] is equal to 32776, and ln to 65535.

Here is the Server Trace file. I am not expert in DRDA protocol at all, but I guess that the server has to send more data than a single DSS can contain, so it cuts it in multiple parts as described in DssProtocolErrors. Is it correct?

@nakagami
Copy link
Owner

please show me create table statement example.
And fill and

@nakagami
Copy link
Owner

When the error occurred, there was a combination of this assertion being False, although it was different from the value you pointed out.
I removed the assert statement and got the expected behavior, so I will remove the assert statement.

nakagami added a commit that referenced this issue Mar 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants