This page last changed on Feb 23, 2009 by pwy4104.

Sprint 3 Goal

Front Burner Stories

Use available functionality on Oracle 10g

Edit

Professor Hawker had stated there are various providers (ITS, CS dept) for oracle. Personal licenses are available. 

Potential issues are:

  • Connectivity
  • Syntax of queries
  • Massive changes required
  • JDBC support for metadata information
  • Dual database support (need for abstraction)
Priority
Description Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
1 Investigate install options
1
0
.75
Chris
Completed

2 Install/get connection to a database
1
0
4

Completed

3 Duplicate/Separate tests into an oracle and MySQL suites 3



Impediment
OracleResultSetMetaData interface does not implement the getSchemaName()
and getTableName() methods because underlying protocol does
not make this feasible.
http://www.engr.mun.ca/~theo/JavaCC-Tutorial/javacc-tutorial.pdf


SELECT syntax - http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_10002.htm#SQLRF01702
4
Run tests and fix errors
3
   
Impediment

5
Issue #3 - IE support
1.5
0
1.5
Paul
Complete

6
Issue #8 - ID columns hidden value
.75
0
.75
Paul
Complete
7
Issue #4 - Sorting after refresh
1.5
0
1
Paul
Complete
8
Issue #7 - Single row update
1
0
.75
Paul
Complete
9 Issue #15 - Resource paths
.75
0
.75
Paul
Complete
10
Issue #14 - error handling
.5
0
.25
Paul
Complete
             
Total   14
0
5.75


Cancel all updates for an entire result table.

Edit
Do not refresh, just reset all cells. All jQuery...

Button should be hidden/not active until changes have been started

Priority
Description Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
1 Refactor and implement button handler
2
0
1.5
Paul
Complete


           
Total
  2
0
1.5
 

Commit all updates for an entire result table.

Edit
Do not refresh, just reset all cells. All jQuery...

Button should be hidden/not active until changes have been started

Priority
Description Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
1 Refactor and implement button handler
2
0
.75
Paul
Complete


           
Total
  2
0
.75
   

Back Burner Stories


Update view with primary key in oracle

Edit

This user story depends on getting oracle working first. We will refrain from estimation until we know how to proceed with oracle in general.

Priority
Description Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
3 Design analysis




4 Implementation and refactoring




5 Write acceptance tests




     
     
Total  




 

Edit

Issue # Impact Date Reported Reported By Assigned To Priority (H/M/L) Status Comments
2 M 1/16/09 Eugene Chris L
Resolved
Should there be a warning for updating a row that has already been updated? (User story: Update table with primary keys Design Session)
3 L 2/11/09 Eugene Paul + Eugene L
Resolved
IE Support for JS
Mostly innerHtml stuff, just replace with jQuery
4 M 2/11/09 Eugene Paul + Eugene M
Resolved
Table sorting after a refresh does not work

Need to pull the JS from the macro somehow that is placed after the table (or rerun it, or replace it).
5 M 2/11/09 Eugene   M
Resolved
Affected rows for joins, or any multitable query calculated incorrectly

Basically, with primary keys, it is one affected row for each table, else show dialog. Ignore how many rows of the join are affected. 
6 L 2/11/09 Chris    
Resolved
Output generator tests
7 M 2/11/09 Matt/Paul Paul + Eugene M
Resolved
Single Row Update
Upon single row update the whole table refreshes
8 M 2/11/09 Chris Paul + Eugene H
Resolved
Identifying columns old values not sent, sent as a key. 

Need to split out JS logic or change server-side.
9 L
2/12/09 Chris   L
Resolved
Random connection error 

sql: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was85184 milliseconds ago.The last packet sent successfully to the server was 85184 milliseconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
10 L 2/12/09 Chris   M
No longer an issue
Query with 1 primary key and 1 identifying column 

WebRowSet Fix
11 L 2/13/09 Paul   L
No longer an issue
No affected rows when updating with id cols
WebRowSet Fix
12 H 2/13/09 Paul   M
No longer an issue
Primary key columns are not listed in multi-table queries
JDBC Metadata probably doesn't report primary keys on selects of multi table selects. Could run queries against underlying tables... WebRowSet Fix
13 L 2/13/09     M
Resolved
Multiline SQL breaks javascript
Remove newlines in UpdatableSqlMacro
14 M 2/16/09 Eugene Paul + Eugene M
Resolved
Refresh Servlet can return errors that JavaScript does not handle
15 L 2/16/09 Eugene   L
Resolved
Resource paths (images) do not respect confluence directory locations
16 M 2/24/09 Eugene   M
Being fixed with WebRowSet
Client side (and probably the server side) does not properly handle null values
Client side passes empty string instead of null.
17 M
2/24/09
Eugene
  M
Resolved
Catalog names do not exist in Oracle 

UpdateServlet has the code to handle this. All tests have catalog names and therefore cannot work on Oracle.
18
  2/24/09
Chris
   
Resolved
Parsing queries in Oracle 

Very hard
19
  2/24/09
Chris
   
Resolved
Do we support unions, intersections, minus
20   3/14/09
Chris
  M-L
Resolved: Needs to be included in user documentation
MySQL catalog updates

WebRowSet bug for handling catalogs


com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.affectedmultitable1 WHERE userId = 2 AND userName = 'Christopher' AND locationI' at line 1
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)
    at com.sun.rowset.internal.CachedRowSetWriter.updateOriginalRow(CachedRowSetWriter.java:491)
    at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:335)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:859)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:918)
    at org.swift.confluence.sql.WRSUpdateServlet.doPost(WRSUpdateServlet.java:60)
   
21
M
3/31/09
Chris
PY + EM
M
Resolved

Canceling rows copies value, does not rerender

Need to rerender data before putting it in table. Only an error at the moment with dates/timestamps since they are longs are displayed in a format.
22
M-L
4/1/09
Eugene
PY + EM H
Resolved

Javascript Injection 

Javascript can be injected with date format
23
M
4/1/09
Chris
  M
  SQL Injection /Malicious attempts

DELETE / DROP /etc. could be passed to plugin and executed.
24
L
4/1/09
Paul
PY + EM
M
Resolved
Deletion is allowed while editing a cell 

Not necessarily a huge thing and may be fine depending on user preference. Should be reviewed though when doing usability or GUI stuff.
25 H
4/3/09
Eugene
PY + EM
H
Resolved
Update values not copied to current 

On update success, update row things should be copied to current values, otherwise you can't do another update without a refresh (makes wrong current value labels).
26
H
4/3/09
Eugene
  M
Resolved
Errors do not go away, until a refresh of whole page.
27
L
4/9/09
Matt + Chris
Eugene
L
Resolved
Save all and Cancel all should not be showing until the table is showing.
28
M
4/10/09
Eugene
Eugene
M
Resolved
You cannot edit rows that are not on the first page (if paging is used)
29
M
4/15/09
Eugene
Eugene
M
Resolved
Deleting two rows says basically the wrong row because datatables doesn't delete internal data: http://datatables.net/forums/comments.php?DiscussionID=107
30
M
4/15/09
Chris
  M
Resolved
Javascript error for null date/timestamps. invalid date if (isNaN(date)) throw new SyntaxError("invalid date");
31
M
4/20/09
Chris
  M
Resolved but need more tests
  
Validators allow null on a non nullable field
32   4/20/ 09
Eugene + Tim
   
Resolved - using java 1.6
 
probably error related connection pool exhausted - maxActive=25, maxIdle=5, maxWait=10000, SetBigStringTryClob=true
33
  4/20/ 09
Eugene + Tim
   
Resolution currently in progress

Scale cannot be negative, readonly tables, min_extent
34
  4/20/ 09
Eugene + Tim
   
Resolved - Not a bug, db user did not have permissions
 
Cannot add/edit: char(1 byte), nullable, null default, no primary key, and a number.
35
H
4/20/09
Eugene + Tim
Eugene + Chris
H
Resolved

Spaces in column name create error in RowSetWriter for Oracle and MySQL.  Resolved by adding ` or " surrounding column name with space based on database name provided by connection database metadata.
36
  4/21/09
Chris
  L
  Firefox table border does not appear until column is clicked for sorting
37
M
4/22/09
Chris

M
Resolved? - Cannot be reproduced
Extra whitespace in macro sql fails with "ORA-00911: invalid character"
38
M
4/22/09 
Chris
  M
  {updateablesql:dataSource=|blindness=help|chris=angry}
produces:

Apr 22, 2009 8:11:22 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet servlet-module-container-servlet threw exception
java.lang.ClassCastException: org.apache.naming.NamingContext cannot be cast to javax.sql.DataSource
        at edu.rit.se.updateablesql.AbstractSQLServlet.lookUpDataSource(AbstractSQLServlet.java:122)
        at edu.rit.se.updateablesql.AbstractSQLServlet.doPost(AbstractSQLServlet.java:61)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.atlassian.plugin.servlet.DelegatingPluginServlet.service(DelegatingPluginServlet.java:42)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.atlassian.plugin.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Document generated by Confluence on May 21, 2009 10:23