[jira] [Commented] (DRILL-2089) Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place for doc.

2015-06-03 Thread Daniel Barclay (Drill) (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-2089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14572229#comment-14572229
 ] 

Daniel Barclay (Drill) commented on DRILL-2089:
---

Reviews are at:
- part 1: http://reviews.apache.org/r/35046
- part 2: http://reviews.apache.org/r/35047
- part 3: (pending merging of part 1)
- part 4: (pending merging of part 2)
- part 5: (pending merging of part 3)
- part 6: (pending merging of part 4)
- part 7: (pending merging of part 5)


> Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place 
> for doc.
> --
>
> Key: DRILL-2089
> URL: https://issues.apache.org/jira/browse/DRILL-2089
> Project: Apache Drill
>  Issue Type: Improvement
>  Components: Client - JDBC
>Reporter: Daniel Barclay (Drill)
>Assignee: Daniel Barclay (Drill)
> Fix For: Future
>
> Attachments: DRILL-2089.Pt1.1.patch.txt, DRILL-2089.Pt2.1.patch.txt, 
> DRILL-2089.Pt3.1.patch.txt, DRILL-2089.Pt4.1.patch.txt, 
> DRILL-2089.Pt5.1.patch.txt, DRILL-2089.Pt6.1.patch.txt, 
> DRILL-2089.Pt7.1.patch.txt
>
>
> The JDBC implementation classes and interfaces that are not part of Drill's 
> published JDBC interface should be moved out of package org.apache.drill.jdbc.
> This will support using Javadoc to produce end-user documentation of 
> Drill-specific JDBC API behavior (e.g., what's implemented or not, plus any 
> extensions), and keep clear what is part of Drill's published JDBC interface 
> vs. what is not (i.e., items that are technically accessible (public or 
> protected) but _not_ meant to be used by Drill users).
> Parts:
> 1.  Move most classes and packages in {{org.apache.drill.jdbc}} (e.g., 
> {{DrillHandler}}, {{DrillConnectionImpl}}) to an implementation package 
> (e.g., {{org.apache.drill.jdbc.impl}}).
> 2.  Split the current {{org.apache.drill.jdbc.Driver}} into a 
> published-interface portion still at {{org.apache.drill.jdbc.Driver}} plus an 
> implementation portion at {{org.apache.drill.jdbc.impl.DriverImpl}}.
> ({{org.apache.drill.jdbc.Driver}} would expose only the published interface 
> (e.g., its constructor and methods from {{java.sql.Driver}}).  
> {{org.apache.drill.jdbc.impl.DriverImpl}} would contain methods that are not 
> part of Drill's published JDBC interface (including methods that need to be 
> public or protected because of using Avatica but which shouldn't be used by 
> Drill users).)
> 3.  As needed (for Drill extensions and for documentation), create 
> Drill-specific interfaces extending standard JDBC interfaces.
> For example, to create a place for documenting Drill-specific behavior of 
> methods defined in {{java.sql.Connection}}, create an interface, e.g., 
> {{org.apache.drill.jdbc.DrillConnection}}, that extends interface 
> {{java.sql.Connection}}, adjust the internal implementation class in 
> {{org.apache.drill.jdbc.impl}} to implement that Drill-specified interface 
> rather than directly implementing {{java.sql.Connection}}, and then add a 
> method declaration with the Drill-specific documentation to the 
> Drill-specific subinterface.
> 4.  In Drill-specific interfaces created per part 3, _consider_ using 
> co-variant return types to narrow return types to the Drill-specific 
> interfaces.
> For example:  {{java.sql.Connection}}'s {{createStatement()}} method returns 
> type {{java.sql.Statement}}.  Drill's implementation of that method will 
> always return a Drill-specific implementation of {{java.sql.Statement}}, 
> which will also be an implementation of the Drill-specific interface that 
> extends {{java.sql.Statement}}.  Therefore, the Drill-specific {{Connection}} 
> interface can re-declare {{createStatement()}} as returning the 
> Drill-specific {{Statement}} interface type (because the Drill-specific 
> {{Statement}} type is a subtype of {{java.sql.Statement}}).
> That would likely make it easier for client code to access any Drill 
> extension methods:  Although the client might have to cast or do something 
> else special to get to the first Drill-specific interface or class, it could 
> traverse to other objects (e.g., from connection to statement, from statement 
> to result set, etc.) still using Drill-specific types, not needing casts or 
> whatever as each step.
> Note:  Steps 1 and 2 have already been prototyped.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (DRILL-2089) Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place for doc.

2015-05-08 Thread Daniel Barclay (Drill) (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-2089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14535569#comment-14535569
 ] 

Daniel Barclay (Drill) commented on DRILL-2089:
---

DRILL-2089 move "incremented" in started in DRILL-2961 work: old class 
...jdbc.DrillStatement split into interface ...jdbc.DrillStatement and class 
...jdbc.impl.DrillStatementImpl.


> Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place 
> for doc.
> --
>
> Key: DRILL-2089
> URL: https://issues.apache.org/jira/browse/DRILL-2089
> Project: Apache Drill
>  Issue Type: Improvement
>  Components: Client - JDBC
>Reporter: Daniel Barclay (Drill)
>Assignee: Daniel Barclay (Drill)
> Fix For: Future
>
>
> The JDBC implementation classes and interfaces that are not part of Drill's 
> published JDBC interface should be moved out of package org.apache.drill.jdbc.
> This will support using Javadoc to produce end-user documentation of 
> Drill-specific JDBC API behavior (e.g., what's implemented or not, plus any 
> extensions), and keep clear what is part of Drill's published JDBC interface 
> vs. what is not (i.e., items that are technically accessible (public or 
> protected) but _not_ meant to be used by Drill users).
> Parts:
> 1.  Move most classes and packages in {{org.apache.drill.jdbc}} (e.g., 
> {{DrillHandler}}, {{DrillConnectionImpl}}) to an implementation package 
> (e.g., {{org.apache.drill.jdbc.impl}}).
> 2.  Split the current {{org.apache.drill.jdbc.Driver}} into a 
> published-interface portion still at {{org.apache.drill.jdbc.Driver}} plus an 
> implementation portion at {{org.apache.drill.jdbc.impl.DriverImpl}}.
> ({{org.apache.drill.jdbc.Driver}} would expose only the published interface 
> (e.g., its constructor and methods from {{java.sql.Driver}}).  
> {{org.apache.drill.jdbc.impl.DriverImpl}} would contain methods that are not 
> part of Drill's published JDBC interface (including methods that need to be 
> public or protected because of using Avatica but which shouldn't be used by 
> Drill users).)
> 3.  As needed (for Drill extensions and for documentation), create 
> Drill-specific interfaces extending standard JDBC interfaces.
> For example, to create a place for documenting Drill-specific behavior of 
> methods defined in {{java.sql.Connection}}, create an interface, e.g., 
> {{org.apache.drill.jdbc.DrillConnection}}, that extends interface 
> {{java.sql.Connection}}, adjust the internal implementation class in 
> {{org.apache.drill.jdbc.impl}} to implement that Drill-specified interface 
> rather than directly implementing {{java.sql.Connection}}, and then add a 
> method declaration with the Drill-specific documentation to the 
> Drill-specific subinterface.
> 4.  In Drill-specific interfaces created per part 3, _consider_ using 
> co-variant return types to narrow return types to the Drill-specific 
> interfaces.
> For example:  {{java.sql.Connection}}'s {{createStatement()}} method returns 
> type {{java.sql.Statement}}.  Drill's implementation of that method will 
> always return a Drill-specific implementation of {{java.sql.Statement}}, 
> which will also be an implementation of the Drill-specific interface that 
> extends {{java.sql.Statement}}.  Therefore, the Drill-specific {{Connection}} 
> interface can re-declare {{createStatement()}} as returning the 
> Drill-specific {{Statement}} interface type (because the Drill-specific 
> {{Statement}} type is a subtype of {{java.sql.Statement}}).
> That would likely make it easier for client code to access any Drill 
> extension methods:  Although the client might have to cast or do something 
> else special to get to the first Drill-specific interface or class, it could 
> traverse to other objects (e.g., from connection to statement, from statement 
> to result set, etc.) still using Drill-specific types, not needing casts or 
> whatever as each step.
> Note:  Steps 1 and 2 have already been prototyped.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (DRILL-2089) Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place for doc.

2015-04-09 Thread Daniel Barclay (Drill) (JIRA)

[ 
https://issues.apache.org/jira/browse/DRILL-2089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14488333#comment-14488333
 ] 

Daniel Barclay (Drill) commented on DRILL-2089:
---

DRILL-2098 move started in DRILL-2613 work.

> Split JDBC implementation out of org.apache.drill.jdbc, so that pkg. is place 
> for doc.
> --
>
> Key: DRILL-2089
> URL: https://issues.apache.org/jira/browse/DRILL-2089
> Project: Apache Drill
>  Issue Type: Improvement
>  Components: Client - JDBC
>Reporter: Daniel Barclay (Drill)
>Assignee: Daniel Barclay (Drill)
> Fix For: Future
>
>
> The JDBC implementation classes and interfaces that are not part of Drill's 
> published JDBC interface should be moved out of package org.apache.drill.jdbc.
> This will support using Javadoc to produce end-user documentation of 
> Drill-specific JDBC API behavior (e.g., what's implemented or not, plus any 
> extensions), and keep clear what is part of Drill's published JDBC interface 
> vs. what is not (i.e., items that are technically accessible (public or 
> protected) but _not_ meant to be used by Drill users).
> Parts:
> 1.  Move most classes and packages in {{org.apache.drill.jdbc}} (e.g., 
> {{DrillHandler}}, {{DrillConnectionImpl}}) to an implementation package 
> (e.g., {{org.apache.drill.jdbc.impl}}).
> 2.  Split the current {{org.apache.drill.jdbc.Driver}} into a 
> published-interface portion still at {{org.apache.drill.jdbc.Driver}} plus an 
> implementation portion at {{org.apache.drill.jdbc.impl.DriverImpl}}.
> ({{org.apache.drill.jdbc.Driver}} would expose only the published interface 
> (e.g., its constructor and methods from {{java.sql.Driver}}).  
> {{org.apache.drill.jdbc.impl.DriverImpl}} would contain methods that are not 
> part of Drill's published JDBC interface (including methods that need to be 
> public or protected because of using Avatica but which shouldn't be used by 
> Drill users).)
> 3.  As needed (for Drill extensions and for documentation), create 
> Drill-specific interfaces extending standard JDBC interfaces.
> For example, to create a place for documenting Drill-specific behavior of 
> methods defined in {{java.sql.Connection}}, create an interface, e.g., 
> {{org.apache.drill.jdbc.DrillConnection}}, that extends interface 
> {{java.sql.Connection}}, adjust the internal implementation class in 
> {{org.apache.drill.jdbc.impl}} to implement that Drill-specified interface 
> rather than directly implementing {{java.sql.Connection}}, and then add a 
> method declaration with the Drill-specific documentation to the 
> Drill-specific subinterface.
> 4.  In Drill-specific interfaces created per part 3, _consider_ using 
> co-variant return types to narrow return types to the Drill-specific 
> interfaces.
> For example:  {{java.sql.Connection}}'s {{createStatement()}} method returns 
> type {{java.sql.Statement}}.  Drill's implementation of that method will 
> always return a Drill-specific implementation of {{java.sql.Statement}}, 
> which will also be an implementation of the Drill-specific interface that 
> extends {{java.sql.Statement}}.  Therefore, the Drill-specific {{Connection}} 
> interface can re-declare {{createStatement()}} as returning the 
> Drill-specific {{Statement}} interface type (because the Drill-specific 
> {{Statement}} type is a subtype of {{java.sql.Statement}}).
> That would likely make it easier for client code to access any Drill 
> extension methods:  Although the client might have to cast or do something 
> else special to get to the first Drill-specific interface or class, it could 
> traverse to other objects (e.g., from connection to statement, from statement 
> to result set, etc.) still using Drill-specific types, not needing casts or 
> whatever as each step.
> Note:  Steps 1 and 2 have already been prototyped.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)