Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow invisible logical return values #135

Closed
krlmlr opened this issue Aug 11, 2016 · 4 comments
Closed

Allow invisible logical return values #135

krlmlr opened this issue Aug 11, 2016 · 4 comments
Assignees

Comments

@krlmlr
Copy link
Member

krlmlr commented Aug 11, 2016

All generics that return a logical should raise an error in case of failure (#51), and return TRUE otherwise (for compatibility). Because the return value is practically useless (at least in interactive mode), it should be invisible, but this is possible only if valueClass = "logical" is not defined for these generics.

It looks like lifting this requirement doesn't have an effect on existing backends.

@krlmlr
Copy link
Member Author

krlmlr commented Dec 1, 2016

@hadley: Do you think d117262 is too much of an evil hack for DBI? I want generics like dbClearResult() to return invisibly, but this doesn't seem possible if the generic has a valueClass.

@hadley
Copy link
Member

hadley commented Dec 1, 2016

Yeah, it's too much of a hack.

What's the problem with an invisibly return + valueClass = "logical" ?

@krlmlr
Copy link
Member Author

krlmlr commented Dec 1, 2016

@hadley: This:

> dbDisconnect
standardGeneric for "dbDisconnect" defined from package "DBI"
  defined with value class: "logical"

function (conn, ...) 
{
    ans <- standardGeneric("dbDisconnect")
    .valueClassTest(ans, "logical", "dbDisconnect")
}
<environment: 0x56ef4c8>
Methods may be defined for arguments: conn
Use  showMethods("dbDisconnect")  for currently available ones.

The .valueClassTest() call always returns a visible value. The only way I see around this is to omit valueClass (in this case there's no .valueClassTest() call), I guess I'm going to do that.

@hadley
Copy link
Member

hadley commented Dec 1, 2016

Oh got it.

I think it's reasonable to omit the valueClass since the tests similarly enforce the API.

@krlmlr krlmlr closed this as completed in f8bed96 Dec 2, 2016
krlmlr added a commit that referenced this issue Dec 2, 2016
- Remove `valueClass = "logical"` for those generics where the return value is meaningless, to allow backends to return invisibly (#135).
- New `dbQuoteIdentifier(DBIConnection, list)` to support quoting multi-component identifiers such as tables in a schema (#71). DBI backends should implement this method for schema support.
- Renamed arguments to `sqlInterpolate()` and `sqlParseVariables()`, the former gains a `.dots` argument (#140, #147).
until RSQLite 1.1 has been built for OS X
- Remove `max.connections` requirement from documentation (#56).
- Enable `dbBind()` example (#136).
- Use roxygen2 inheritance to copy DBI specification to this package.
- Avoid using braces in the definitions of generics if possible, so that standard generics can be detected (#146).
- Change `omegahat.org` URL to `omegahat.net`, the particular document still doesn't exist below the new domain.
- Use `tic` package for building documentation.
@ghost ghost removed the in progress label Dec 2, 2016
krlmlr added a commit that referenced this issue Mar 10, 2017
- Interface changes
    - Deprecated `dbDriver()` and `dbUnloadDriver()` by documentation (#21).
    - Renamed arguments to  `sqlInterpolate()` and `sqlParseVariables()` to be more consistent with the rest of the interface, and added `.dots` argument to `sqlParseVariables`. DBI drivers are now expected to implement `sqlParseVariables(conn, sql, ..., .dots)` and `sqlInterpolate(conn, sql, ...)` (#147).

- Interface enhancements
    - Removed `valueClass = "logical"` for those generics where the return value is meaningless, to allow backends to return invisibly (#135).
    - Avoiding using braces in the definitions of generics if possible, so that standard generics can be detected (#146).
    - Added default implementation for `dbReadTable()`.
    - All standard generics are required to have an ellipsis (with test), for future extensibility.    - Improved default implementation of `dbQuoteString()` and `dbQuoteIdentifier()` (#77).
    - Removed `tryCatch()` call in `dbGetQuery()` (#113).

- Documentation improvements
    - Finalized first draft of DBI specification, now in a vignette.
    - Most methods now draw documentation from `DBItest`, only those where the behavior is not finally decided don't do this yet yet.
    - Removed `max.connections` requirement from documentation (#56).
    - Improved `dbBind()` documentation and example (#136).
    - Change `omegahat.org` URL to `omegahat.net`, the particular document still doesn't exist below the new domain.

- Internal
    - Use roxygen2 inheritance to copy DBI specification to this package.
    - Use `tic` package for building documentation.
    - Use markdown in documentation.
@github-actions github-actions bot locked and limited conversation to collaborators Oct 8, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants