Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: apache/cassandra-gocql-driver
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: fd7b28a5e773092ef4b15725370a576f101ab72f
Choose a base ref
..
head repository: apache/cassandra-gocql-driver
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: b2e98d51417d58946d3171662a0ada2c2b4df914
Choose a head ref
Showing with 358 additions and 2,736 deletions.
  1. +0 −36 .asf.yaml
  2. +143 −0 AUTHORS
  3. +40 −24 CONTRIBUTING.md
  4. +27 −203 LICENSE
  5. +0 −184 NOTICE
  6. +13 −6 README.md
  7. +0 −24 address_translators.go
  8. +0 −24 address_translators_test.go
  9. +0 −24 batch_test.go
  10. +0 −24 cass1batch_test.go
  11. +1 −25 cassandra_test.go
  12. +3 −23 cluster.go
  13. +0 −24 cluster_test.go
  14. +0 −24 common_test.go
  15. +0 −24 compressor.go
  16. +0 −24 compressor_test.go
  17. +3 −23 conn.go
  18. +3 −24 conn_test.go
  19. +4 −24 connectionpool.go
  20. +0 −24 connectionpool_test.go
  21. +0 −24 control.go
  22. +0 −24 control_ccm_test.go
  23. +0 −24 control_test.go
  24. +3 −23 cqltypes.go
  25. +0 −24 debug_off.go
  26. +0 −24 debug_on.go
  27. +0 −24 dial.go
  28. +3 −23 doc.go
  29. +0 −24 errors.go
  30. +0 −24 errors_test.go
  31. +1 −25 events.go
  32. +0 −24 events_ccm_test.go
  33. +0 −24 events_test.go
  34. +1 −26 example_batch_test.go
  35. +1 −26 example_dynamic_columns_test.go
  36. +1 −26 example_lwt_batch_test.go
  37. +1 −26 example_lwt_test.go
  38. +1 −26 example_marshaler_test.go
  39. +1 −26 example_nulls_test.go
  40. +1 −26 example_paging_test.go
  41. +1 −26 example_set_test.go
  42. +1 −26 example_test.go
  43. +1 −26 example_udt_map_test.go
  44. +1 −26 example_udt_marshaler_test.go
  45. +1 −26 example_udt_struct_test.go
  46. +1 −26 example_udt_unmarshaler_test.go
  47. +0 −24 filters.go
  48. +0 −24 filters_test.go
  49. +3 −23 frame.go
  50. +0 −24 frame_test.go
  51. +0 −24 framer_bench_test.go
  52. +0 −24 fuzz.go
  53. +0 −17 go.mod
  54. +3 −23 helpers.go
  55. +0 −24 helpers_test.go
  56. +4 −28 host_source.go
  57. +1 −25 host_source_gen.go
  58. +0 −24 host_source_test.go
  59. +0 −17 install_test_deps.sh
  60. +0 −18 integration.sh
  61. +0 −24 integration_test.go
  62. +0 −24 internal/ccm/ccm.go
  63. +0 −25 internal/ccm/ccm_test.go
  64. +0 −24 internal/lru/lru.go
  65. +0 −24 internal/lru/lru_test.go
  66. +0 −24 internal/murmur/murmur.go
  67. +0 −25 internal/murmur/murmur_appengine.go
  68. +0 −24 internal/murmur/murmur_test.go
  69. +2 −26 internal/murmur/murmur_unsafe.go
  70. +0 −24 internal/streams/streams.go
  71. +0 −24 internal/streams/streams_test.go
  72. +0 −24 keyspace_table_test.go
  73. +0 −24 logger.go
  74. +0 −17 lz4/go.mod
  75. +0 −24 lz4/lz4.go
  76. +0 −24 lz4/lz4_test.go
  77. +3 −23 marshal.go
  78. +0 −24 marshal_test.go
  79. +0 −24 metadata.go
  80. +0 −24 metadata_test.go
  81. +3 −23 policies.go
  82. +0 −24 policies_test.go
  83. +1 −26 prepared_cache.go
  84. +0 −24 query_executor.go
  85. +0 −24 ring.go
  86. +0 −24 ring_test.go
  87. +4 −24 session.go
  88. +0 −24 session_connect_test.go
  89. +74 −24 session_test.go
  90. +0 −24 session_unit_test.go
  91. +0 −24 stress_test.go
  92. +0 −24 token.go
  93. +0 −24 token_test.go
  94. +0 −24 topology.go
  95. +0 −24 topology_test.go
  96. +0 −24 tuple_test.go
  97. +0 −24 udt_test.go
  98. +3 −23 uuid.go
  99. +0 −24 uuid_test.go
  100. +0 −24 version.go
  101. +0 −24 wiki_test.go
36 changes: 0 additions & 36 deletions .asf.yaml

This file was deleted.

143 changes: 143 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# This source file refers to The gocql Authors for copyright purposes.

Christoph Hack <christoph@tux21b.org>
Jonathan Rudenberg <jonathan@titanous.com>
Thorsten von Eicken <tve@rightscale.com>
Matt Robenolt <mattr@disqus.com>
Phillip Couto <phillip.couto@stemstudios.com>
Niklas Korz <korz.niklask@gmail.com>
Nimi Wariboko Jr <nimi@channelmeter.com>
Ghais Issa <ghais.issa@gmail.com>
Sasha Klizhentas <klizhentas@gmail.com>
Konstantin Cherkasov <k.cherkasoff@gmail.com>
Ben Hood <0x6e6562@gmail.com>
Pete Hopkins <phopkins@gmail.com>
Chris Bannister <c.bannister@gmail.com>
Maxim Bublis <b@codemonkey.ru>
Alex Zorin <git@zor.io>
Kasper Middelboe Petersen <me@phant.dk>
Harpreet Sawhney <harpreet.sawhney@gmail.com>
Charlie Andrews <charlieandrews.cwa@gmail.com>
Stanislavs Koikovs <stanislavs.koikovs@gmail.com>
Dan Forest <bonjour@dan.tf>
Miguel Serrano <miguelvps@gmail.com>
Stefan Radomski <gibheer@zero-knowledge.org>
Josh Wright <jshwright@gmail.com>
Jacob Rhoden <jacob.rhoden@gmail.com>
Ben Frye <benfrye@gmail.com>
Fred McCann <fred@sharpnoodles.com>
Dan Simmons <dan@simmons.io>
Muir Manders <muir@retailnext.net>
Sankar P <sankar.curiosity@gmail.com>
Julien Da Silva <julien.dasilva@gmail.com>
Dan Kennedy <daniel@firstcs.co.uk>
Nick Dhupia<nick.dhupia@gmail.com>
Yasuharu Goto <matope.ono@gmail.com>
Jeremy Schlatter <jeremy.schlatter@gmail.com>
Matthias Kadenbach <matthias.kadenbach@gmail.com>
Dean Elbaz <elbaz.dean@gmail.com>
Mike Berman <evencode@gmail.com>
Dmitriy Fedorenko <c0va23@gmail.com>
Zach Marcantel <zmarcantel@gmail.com>
James Maloney <jamessagan@gmail.com>
Ashwin Purohit <purohit@gmail.com>
Dan Kinder <dkinder.is.me@gmail.com>
Oliver Beattie <oliver@obeattie.com>
Justin Corpron <jncorpron@gmail.com>
Miles Delahunty <miles.delahunty@gmail.com>
Zach Badgett <zach.badgett@gmail.com>
Maciek Sakrejda <maciek@heroku.com>
Jeff Mitchell <jeffrey.mitchell@gmail.com>
Baptiste Fontaine <b@ptistefontaine.fr>
Matt Heath <matt@mattheath.com>
Jamie Cuthill <jamie.cuthill@gmail.com>
Adrian Casajus <adriancasajus@gmail.com>
John Weldon <johnweldon4@gmail.com>
Adrien Bustany <adrien@bustany.org>
Andrey Smirnov <smirnov.andrey@gmail.com>
Adam Weiner <adamsweiner@gmail.com>
Daniel Cannon <daniel@danielcannon.co.uk>
Johnny Bergström <johnny@joonix.se>
Adriano Orioli <orioli.adriano@gmail.com>
Claudiu Raveica <claudiu.raveica@gmail.com>
Artem Chernyshev <artem.0xD2@gmail.com>
Ference Fu <fym201@msn.com>
LOVOO <opensource@lovoo.com>
nikandfor <nikandfor@gmail.com>
Anthony Woods <awoods@raintank.io>
Alexander Inozemtsev <alexander.inozemtsev@gmail.com>
Rob McColl <rob@robmccoll.com>; <rmccoll@ionicsecurity.com>
Viktor Tönköl <viktor.toenkoel@motionlogic.de>
Ian Lozinski <ian.lozinski@gmail.com>
Michael Highstead <highstead@gmail.com>
Sarah Brown <esbie.is@gmail.com>
Caleb Doxsey <caleb@datadoghq.com>
Frederic Hemery <frederic.hemery@datadoghq.com>
Pekka Enberg <penberg@scylladb.com>
Mark M <m.mim95@gmail.com>
Bartosz Burclaf <burclaf@gmail.com>
Marcus King <marcusking01@gmail.com>
Andrew de Andrade <andrew@deandrade.com.br>
Robert Nix <robert@nicerobot.org>
Nathan Youngman <git@nathany.com>
Charles Law <charles.law@gmail.com>; <claw@conduce.com>
Nathan Davies <nathanjamesdavies@gmail.com>
Bo Blanton <bo.blanton@gmail.com>
Vincent Rischmann <me@vrischmann.me>
Jesse Claven <jesse.claven@gmail.com>
Derrick Wippler <thrawn01@gmail.com>
Leigh McCulloch <leigh@leighmcculloch.com>
Ron Kuris <swcafe@gmail.com>
Raphael Gavache <raphael.gavache@gmail.com>
Yasser Abdolmaleki <yasser@yasser.ca>
Krishnanand Thommandra <devtkrishna@gmail.com>
Blake Atkinson <me@blakeatkinson.com>
Dharmendra Parsaila <d4dharmu@gmail.com>
Nayef Ghattas <nayef.ghattas@datadoghq.com>
Michał Matczuk <mmatczuk@gmail.com>
Ben Krebsbach <ben.krebsbach@gmail.com>
Vivian Mathews <vivian.mathews.3@gmail.com>
Sascha Steinbiss <satta@debian.org>
Seth Rosenblum <seth.t.rosenblum@gmail.com>
Javier Zunzunegui <javier.zunzunegui.b@gmail.com>
Luke Hines <lukehines@protonmail.com>
Zhixin Wen <john.wenzhixin@hotmail.com>
Chang Liu <changliu.it@gmail.com>
Ingo Oeser <nightlyone@gmail.com>
Luke Hines <lukehines@protonmail.com>
Jacob Greenleaf <jacob@jacobgreenleaf.com>
Alex Lourie <alex@instaclustr.com>; <djay.il@gmail.com>
Marco Cadetg <cadetg@gmail.com>
Karl Matthias <karl@matthias.org>
Thomas Meson <zllak@hycik.org>
Martin Sucha <martin.sucha@kiwi.com>; <git@mm.ms47.eu>
Pavel Buchinchik <p.buchinchik@gmail.com>
Rintaro Okamura <rintaro.okamura@gmail.com>
Yura Sokolov <y.sokolov@joom.com>; <funny.falcon@gmail.com>
Jorge Bay <jorgebg@apache.org>
Dmitriy Kozlov <hummerd@mail.ru>
Alexey Romanovsky <alexus1024+gocql@gmail.com>
Jaume Marhuenda Beltran <jaumemarhuenda@gmail.com>
Piotr Dulikowski <piodul@scylladb.com>
Árni Dagur <arni@dagur.eu>
Tushar Das <tushar.das5@gmail.com>
Maxim Vladimirskiy <horkhe@gmail.com>
Bogdan-Ciprian Rusu <bogdanciprian.rusu@crowdstrike.com>
Yuto Doi <yutodoi.seattle@gmail.com>
Krishna Vadali <tejavadali@gmail.com>
Jens-W. Schicke-Uffmann <drahflow@gmx.de>
Ondrej Polakovič <ondrej.polakovic@kiwi.com>
Sergei Karetnikov <sergei.karetnikov@gmail.com>
Stefan Miklosovic <smiklosovic@apache.org>
Adam Burk <amburk@gmail.com>
Valerii Ponomarov <kiparis.kh@gmail.com>
Neal Turett <neal.turett@datadoghq.com>
Doug Schaapveld <djschaap@gmail.com>
Steven Seidman <steven.seidman@datadoghq.com>
Wojciech Przytuła <wojciech.przytula@scylladb.com>
João Reis <joao.reis@datastax.com>
Lauro Ramos Venancio <lauro.venancio@incognia.com>
Dmitry Kropachev <dmitry.kropachev@gmail.com>
Oliver Boyle <pleasedontspamme4321+gocql@gmail.com>
Jackson Fleming <jackson.fleming@instaclustr.com>
Sylwia Szunejko <sylwia.szunejko@scylladb.com>
64 changes: 40 additions & 24 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,78 @@
# Contributing to the Apache Cassandra GoCQL Driver
# Contributing to gocql

**TL;DR** - this manifesto sets out the bare minimum requirements for submitting a patch to gocql.

This guide outlines the process of landing patches in gocql and the general approach to maintaining the code base.

## Background

The goal of the gocql project is to provide a stable and robust CQL driver for Go. This is a community driven project that is coordinated by a small team of developers in and around the Apache Cassandra project. For security, governance and administration issues please refer to the Cassandra Project Management Committee.
The goal of the gocql project is to provide a stable and robust CQL driver for Go. gocql is a community driven project that is coordinated by a small team of core developers.

## Minimum Requirement Checklist

The following is a check list of requirements that need to be satisfied in order for us to merge your patch:

* You should raise a pull request to apache/cassandra-gocql-driver on Github
* You should raise a pull request to gocql/gocql on Github
* The pull request has a title that clearly summarizes the purpose of the patch
* The motivation behind the patch is clearly defined in the pull request summary
* You agree that your contribution is donated to the Apache Software Foundation (appropriate copyright is on all new files)
* Your name and email have been added to the `AUTHORS` file (for copyright purposes)
* The patch will merge cleanly
* The test coverage does not fall
* The merge commit passes the regression test suite on GitHub Actions
* The test coverage does not fall below the critical threshold (currently 64%)
* The merge commit passes the regression test suite on Travis
* `go fmt` has been applied to the submitted code
* Notable changes (i.e. new features or changed behavior, bugfixes) are appropriately documented in CHANGELOG.md, functional changes also in godoc
* A correctly formatted commit message, see below

If there are any requirements that can't be reasonably satisfied, please state this either on the pull request or as part of discussion on the mailing list. Where appropriate, the core team may apply discretion and make an exception to these requirements.

## Commit Message

The Apache Cassandra project has a commit message precendence like
```
<One sentence description, usually Jira title or CHANGES.txt summary>
patch by <Authors>; reviewed by <Reviewers> for CASSANDRA-#####
```

The 'patch by …; reviewed by' line is important. It permits our review-than-commit procedure, allowing commits from non-git-branch patches. It is also parsed to build the project contribulyse statistics found [here](https://nightlies.apache.org/cassandra/devbranch/misc/contribulyze/html/).


Background: https://cassandra.apache.org/_/development/how_to_commit.html#tips

## Beyond The Checklist

In addition to stating the hard requirements, there are a bunch of things that we consider when assessing changes to the library. These soft requirements are helpful pointers of how to get a patch landed quicker and with less fuss.

### General QA Approach

The Cassandra project needs to consider the ongoing maintainability of the library at all times. Patches that look like they will introduce maintenance issues for the team will not be accepted.
The gocql team needs to consider the ongoing maintainability of the library at all times. Patches that look like they will introduce maintenance issues for the team will not be accepted.

Your patch will get merged quicker if you have decent test cases that provide test coverage for the new behavior you wish to introduce.

Unit tests are good, integration tests are even better. An example of a unit test is `marshal_test.go` - this tests the serialization code in isolation. `cassandra_test.go` is an integration test suite that is executed against every version of Cassandra that gocql supports as part of the CI process on Travis.

That said, the point of writing tests is to provide a safety net to catch regressions, so there is no need to go overboard with tests. Remember that the more tests you write, the more code we will have to maintain. So there's a balance to strike there.

### When It's Too Difficult To Automate Testing

There are legitimate examples of where it is infeasible to write a regression test for a change. Never fear, we will still consider the patch and quite possibly accept the change without a test. The gocql team takes a pragmatic approach to testing. At the end of the day, you could be addressing an issue that is too difficult to reproduce in a test suite, but still occurs in a real production app. In this case, your production app is the test case, and we will have to trust that your change is good.

Examples of pull requests that have been accepted without tests include:

* https://github.com/gocql/gocql/pull/181 - this patch would otherwise require a multi-node cluster to be booted as part of the CI build
* https://github.com/gocql/gocql/pull/179 - this bug can only be reproduced under heavy load in certain circumstances

### Sign Off Procedure

Generally speaking, a pull request can get merged by any one of the project's committers. If your change is minor, chances are that one team member will just go ahead and merge it there and then. As stated earlier, suitable test coverage will increase the likelihood that a single reviewer will assess and merge your change. If your change has no test coverage, or looks like it may have wider implications for the health and stability of the library, the reviewer may elect to refer the change to another team member to achieve consensus before proceeding. Therefore, the tighter and cleaner your patch is, the quicker it will go through the review process.
Generally speaking, a pull request can get merged by any one of the core gocql team. If your change is minor, chances are that one team member will just go ahead and merge it there and then. As stated earlier, suitable test coverage will increase the likelihood that a single reviewer will assess and merge your change. If your change has no test coverage, or looks like it may have wider implications for the health and stability of the library, the reviewer may elect to refer the change to another team member to achieve consensus before proceeding. Therefore, the tighter and cleaner your patch is, the quicker it will go through the review process.

### Supported Features

gocql is a low level wire driver for Cassandra CQL. By and large, we would like to keep the functional scope of the library as narrow as possible. We think that gocql should be tight and focused, and we will be naturally skeptical of things that could just as easily be implemented in a higher layer. Inevitably you will come across something that could be implemented in a higher layer, save for a minor change to the core API. In this instance, please strike up a conversation in the Cassandra community. Chances are we will understand what you are trying to achieve and will try to accommodate this in a maintainable way.
gocql is a low level wire driver for Cassandra CQL. By and large, we would like to keep the functional scope of the library as narrow as possible. We think that gocql should be tight and focused, and we will be naturally skeptical of things that could just as easily be implemented in a higher layer. Inevitably you will come across something that could be implemented in a higher layer, save for a minor change to the core API. In this instance, please strike up a conversation with the gocql team. Chances are we will understand what you are trying to achieve and will try to accommodate this in a maintainable way.

### Longer Term Evolution

There are some long term plans for gocql that have to be taken into account when assessing changes. That said, gocql is ultimately a community driven project and we don't have a massive development budget, so sometimes the long term view might need to be de-prioritized ahead of short term changes.

## Officially Supported Server Versions

Currently, the officially supported versions of the Cassandra server include:

* 1.2.18
* 2.0.9

Chances are that gocql will work with many other versions. If you would like us to support a particular version of Cassandra, please start a conversation about what version you'd like us to consider. We are more likely to accept a new version if you help out by extending the regression suite to cover the new version to be supported.

## The Core Dev Team

The core development team includes:

* tux21b
* phillipCouto
* Zariel
* 0x6e6562
Loading