cretz / node-tds

Pure JS implementation of TDS protocol for Microsoft SQL Server

Home Page:http://cretz.github.com/node-tds

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

执行的 SELECT 语句过长会导致 SOCKET 关闭!

yellowrace opened this issue · comments

select max(id) from test where pid in(607645,607646,607650,607656,607662,607666,607667,607678,656359,672220,672221,672222,672223,672225,672227,672228,672229,672231,672233,672235,672237,672239,672241,672243,672245,672247,672249,672251,672253,672257,672259,672260,672261,672262,672263,672264,672265,672266,672267,672268,672269,672289,672291,672293,672295,672297,672299,672301,672303,672305,672307,672309,672311,672313,672315,672317,672318,672319,672321,672323,672327,672329,672330,672332,672333,672334,672335,672336,672346,672347,672349,672350,672351,672352,672353,672354,672355,672356,672357,672358,672359,672360,672361,672362,672363,672364,672365,672366,672367,672368,672369,672371,672373,672375,672377,672381,672384,672386,672388,672390,672396,672397,672398,672400,672401,672403,672405,672406,672408,672410,672412,672417,672419,672421,672423,672425,672427,672429,672431,672433,672435,672437,672439,672459,672461,672463,672465,672474,672475,672476,672479,686863,706113,707544,707567,707569,707571,707573,707575,707577,707579,707581,707584,707585,707586,707587,707588,707589,707590,707593,707595,707597,707599,707601,707603,707605,707607,707608,707609,707610,707612,707614,707616,707617,707619,707620,707622,707624,707626,707627,707628,707630,707631,707633,707635,707637,707639,707641,707643,707647,707649,707651,707653,707655,707657,707659,707676,707678,707680,707682,707683,707686,707688,707690,707692,707696,707701,707731,707733,707745,707749,707751,707753,707754,707757,707761,707762,707763,707772,707773,707774,707776,707777,707781,707782,707783,707792,707799,707800,707801,707802,707819,707821,707822,707824,707826,707828,707830,707832,672276,707564,707825,672322,672468,672445,672422,707710,672399,672230,707687,672376,707856,707656,707813,707576,707790,672456,707833,707713,707521,672219,672442,672273,672250,707513,707853,672296,707845,705964,707693,672379,707716,672402,707865,672516,707673,672316,707873,690490,672393,705950,707796,672236,707842,707650,672385,707604,672339,672382,707719,707670,705961,707839,707862,608120,672270,707570,672519,707876,707527,705953,672462,672413,707730,707636,608128,707707,672279,672256,707613,672302,672448,672436,672342,707793,707596,707805,707699,672290,672287,672310,707816,672522,707667,707859,707836,672416,707679,707722,672345,707591,707568,707794,672234,672391,672337,707702,707602,707848,672288,707837,672480,707645,707694,707768,672380,707668,707860,672460,707868,705959,707817,672517,672411,707874,707625,707725,672348,707611,707705,672394,672254,707642,672331,672285,672434,672242,672477,707814,707791,707834,707857,707665,672520,707877,672308,672457,608129,707728,672414,705956,707528,672420,707708,672374,707662,707685,672274,608123,672328,672282,707654,707808,707854,672454,707788,705965,707811,707582,707831,707674,707711,672325,707565,672294,672248,672440,707851,707797,707671,707648,705962,672451,707840,672428,707691,707785,707714,707820,672471,672271,707522,707871,672314,672395,672372,707660,707729,707706,672226,707514,672280,672326,707606,707806,707852,705963,707717,672452,707809,707786,672472,707829,707580,672415,707872,672300,707849,707732,707634,707803,672469,672446,707709,672277,707594,672532,672246,672292,707697,672340,672383,672312,707646,707720,707669,672426,672449,707677,672320,705960,707583,707869,672466,608127,672443,707566,672389,707689,672343,707846,672286,707700,672240,672478,707766,707600,707623,707815,654768,707835,707666,705957,707866,608130,672409,672458,707574,707531,707723,707823,705951,608124,707640,707663,707855,707843,672283,672392,707703,707789,672432,672455,707863,707812,672306,672518,707875,707726,705954,705952,707518,672441,672418,707664,707844,672341,672284,672238,707698,707652,707798,672387,672407,707672,707864,672521,707629,608122,672272,707572,707621,705955,705949,672464,707721,707684,707615,672304,707661,707638,707795,707807,672281,707841,672344,707598,672438,707861,707838,672453,672430,707787,707810,672473,707618,707818,707724,672324,707850,672370,707658,707827,707681,707804,672232,672255,672470,672278,672447,707735,672424,707712,672378,707704,707858,707715,672450,707784,672258,707870,707727,707578,672444,672467,672298,707592,672275,672252,707644,687873,672244,707847,707695,707718,672404,705966,707867,705958,672224,707632,707526,707675) group by pid,ctype

修复 /lib/tds-client.js 文件中的 _sendPacket 函数。

TdsClient.prototype._sendPacket = function(packet) {
var buff, builder;
this.debug('Sending packet: %s at state', packet.name, this.state);
builder = new BufferBuilder();
builder = packet.toBuffer(new BufferBuilder(), this);
buff = builder.toBuffer();
this.debug('Packet size: %d', buff.length);

var size = 4096, m = 8, n = size - m, c, t, r, i = m, j, k = 0, l = buff.length;
if (l > size) {
  while(i < l) {
    c = Math.min(n, l - i);
    j = i + c;
    t = new Buffer(c + m);
    buff.copy(t, 0, 0, m);
    buff.copy(t, m, i, j);
    t[1] = j < l ? 0 : 1;         // Status(1)
    t[2] = t.length >> 8 & 0xFF;  // Length(2)
    t[3] = t.length & 0xFF;
    t[6] = Math.min(0xFF, ++k);   // Packet(1)
    r = this._socket.write(t);
    i = j;
  }
  return r;
}

return this._socket.write(buff);

};