Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-3137

Groovy SQL call, eachRow and Resultset in parameters

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5.7
    • 1.6.5
    • SQL processing
    • None
    • Windows XP SP3

    Description

      Sql.call method should clean up passed ResultSets...consider calling this method from "eachRow" as well if OutParameters are used (see Bug report GROOVY-3136)

      public void call(String sql, List params, Closure closure) throws Exception {
          Connection connection = createConnection();
          CallableStatement statement = connection.prepareCall(sql);
          List results = new ArrayList(); // <<< put result list here...
          try {
              log.fine(sql);
              setParameters(params, statement);
              statement.execute();
              List results = new ArrayList();
              int indx = 0;
              int inouts = 0;
              for (Iterator iter = params.iterator(); iter.hasNext();) {
                  Object value = iter.next();
                  if (value instanceof OutParameter) {
                      if (value instanceof ResultSetOutParameter) {
                          results.add(CallResultSet.getImpl(statement, indx));
                      } else {
                          Object o = statement.getObject(indx + 1);
                          if (o instanceof ResultSet) {
                              results.add(new GroovyResultSetProxy((ResultSet) o).getImpl());
                          } else {
                              results.add(o);
                          }
                      }
                      inouts++;
                  }
                  indx++;
              }
              closure.call(results.toArray(new Object[inouts]));
          } catch (SQLException e) {
              log.log(Level.WARNING, "Failed to execute: " + sql, e);
              throw e;
          } finally {		
              // TODO: cleanup ResultSets in "results" -> closeResources(connection, statement);
          }
      }
      

      Attachments

        Issue Links

          Activity

            People

              paulk Paul King
              ukistler Ueli Kistler
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: