title: Knex 0.95.4 not working with oracle 11g throwing exception ORA 01795 when querying max number of expression in a list more 1000
body: <p>code initially using
  &quot;knex&quot;: &quot;0.12.9&quot; upgrade &quot;knex&quot;: &quot;0.95.4&quot;</p>
  <p>Need to implement the same scenario in upgrade version 0.95.4</p>
  <p>Before the scenario was handled expression in a list more 1000 in the following way but in upgrade version of knex is not support the code :</p>
  <pre><code>const inherits = require('inherits');
  const OracleClient = require('knex/lib/dialects/oracledb');
  const OracleQueryCompiler = require('knex/lib/dialects/oracledb/query/compiler');
  const dbConfig = require('./config.js').get('db');
  
  // inherits the property of OracleQueryCompiler 
  function EMSOracleQueryCompiler() {
      OracleQueryCompiler.apply(this, arguments);
  }
  inherits(EMSOracleQueryCompiler, OracleQueryCompiler);
  
   /**
   * fix of whereIn oracle db restriction (max number of values in where is 1000)
   * @param statement
   * @returns {*}
   */
  EMSOracleQueryCompiler.prototype.whereIn = function whereIn(statement) {
    function chunk(arr, start, amount){
       var result = [],
              i,
              start = start || 0,
              amount = amount || 500,
              len = arr.length;
  
          do {
              //console.log('appending ', start, '-', start + amount, 'of ', len, '.');
              result.push(arr.slice(start, start+amount));
              start += amount;
  
          } while (start&lt; len);
  
          return result;
      }
      // checking condition for statement of column is array
      if (Array.isArray(statement.column))
          return this.multiWhereIn(statement);
  
      // checking condition for statement value length more than 1000 records
      if(statement.value.length &gt; 1000) {    
          let values = chunk(statement.value, 0, 1000);    
          return '(' + values.map(function(array) {
              statement.value = array;
              return this.whereIn(statement);
          }.bind(this)).join(' OR ') + ')';
      }
  
      return this.formatter.wrap(statement.column)
          + ' ' + this._not(statement, 'in ')
          + this.wrap(this.formatter.parameterize(statement.value));
  };
  
   function EMSOracleClient () {
      OracleClient.apply(this, arguments);
  }
  inherits(EMSOracleClient, OracleClient);
  
  EMSOracleClient.prototype.queryCompiler = function () {
     return new (Function.prototype.bind.apply(EMSOracleQueryCompiler,
          [null].concat([this], Array.prototype.slice.call(arguments))))();
  }
  </code></pre>