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

Prepared statement support fixes + stmt naive merge #476

Closed
wants to merge 66 commits into from

Conversation

johncant
Copy link
Contributor

@johncant johncant commented Jan 6, 2014

Hi all,

I've merged master into your stmt branch and fixed one or two bugs. I might have started on the wrong base branch (i.e. https://github.com/brianmario/mysql2/tree/stmt rather than https://github.com/sodabrew/mysql2/tree/stmt_rebase), but I think I have something working.

Fixes:
(1) spec/configuration.yml being ignored in some cases
(2) segfault when a string was passed into Statement#execute
(3) Used MYSQL_TYPE_DATE instead of MYSQL_TYPE_NEWDATE. To choose one, we'd need to do some sort of test at runtime.

Hope it's useful.

tenderlove and others added 30 commits July 9, 2010 11:11
* master:
  check for and support field-level encodings
  on second thought, we should make sure we were given a string earlier on
  no need to Check_Type in these spots since we're using StringValuePtr as well
* master:
  remove Sequel adapter as it's now in Sequel core :)
  move -Wextra to development flags area
  update AR adapter to reflect timezone setting update
  application_timezone is allowed to be nil
  default application_timezone to nil
  sync up with sequel adapter from my Sequel fork until it's officially merged in
  convert :timezone option into two new ones :database_timezone - the timezone (:utc or :local) Mysql2 will assume time/datetime fields are stored in the db. This modifies what initial timezone your Time objects will be in when creating them from libmysql in C and :application_timezone - the timezone (:utc or :local) you'd finally like the Time objects converted to before you get them
  can't call literal here because it'll try to join it's own thread
  Mysql2::Client uses the :username key, set it to :user if that was used instead
  heh
  fix typo in comment
  major refactor of Sequel adapter - it's now green in Sequel
  add :cast_booleans option for automatically casting tinyint(1) fields into true/false for ruby
  move most previously global symbols to static to prevent conflicts (thanks for catching this Eric)
  respect :symbolize_keys option for Mysql2::Result#fields if it's called before the first row is built
  initialize @Active early on to prevent warnings later
  let's try that again - libmysql only allows one query be sent at a time per connection, bail early if that's attempted
  Revert "libmysql only allows one query be sent at a time per connection, bail early if that's attempted"
  libmysql only allows one query be sent at a time per connection, bail early if that's attempted
  no need to carry over options twice as we're already doing it up in rb_mysql_client_async_result
* master:
  Detach before executing callbacks.
  make sure we don't hit a race condition if this EM spec is taking longer to run than normal
  was in a hurry earlier
  whoops, lost this line in a previous patch
  Dry windows configuration options
  Inject 1.8/1.9 pure-ruby entry point during xcompile
  Use MySQL 5.1.51 now from available mirror
* master:
  avoid potential race-condition with closing a connection
  add option for setting the wait_timeout in the AR adapter (this can be done in database.yml)
  add some more defaults to the connect flags
  add connect_flags to default options and add REMEMBER_OPTIONS to that list. fix NUM2INT to be NUM2ULONG as it should be for flags
  free the client after close if we can
  forgot to remove this
  get rid of double-pointer casting
  a couple of minor updates to connection management with some specs
  check for error from mysql_affected_rows call
  change connection check symantecs
* master:
  only use wait_timeout if it's a Fixnum
  update gemspec from file updates
  no need to invalidate the FD now that we're only modifying it once, in one place
  no need to check if the FD is >= 0 now that we centralized the close/free logic. Once closed, none of that code will run again
  wording fix in readme
@sodabrew
Copy link
Collaborator

sodabrew commented Jan 6, 2014

Thanks for helping on this! Yes, the rebase is important to eliminate the large number of merge commits. There's also #405 which was my rebase work, and is probably the most recent effort to start from.

@johncant
Copy link
Contributor Author

johncant commented Jan 6, 2014

Cool @sodabrew, - I'll add my tests and see if my fixes are applicable to your branch.

@johncant
Copy link
Contributor Author

johncant commented Jan 9, 2014

I'm also closing this one since it doesn't include @nyaxt's work. This branch is also usable if slightly inconsistent.

@johncant johncant closed this Jan 9, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants