commit f2ee2db4fa4d99e02a2dd9673db720b7348e18d4
Author: Liam Morland <lkmorlan@uwaterloo.ca>
Date:   Tue Nov 8 18:17:50 2016 -0500

    Issue #2621482: Document NULLs in schema.

diff --git a/election.install b/election.install
index 818cb48..b59916f 100644
--- a/election.install
+++ b/election.install
@@ -35,7 +35,7 @@ function election_schema() {
         'not null' => TRUE,
       ),
       'uid' => array(
-        'description' => 'The {users}.uid of the election\'s owner/creator.',
+        'description' => 'The {users}.uid of the election\'s owner/creator. NULL means the user has been deleted.',
         'type' => 'int',
         'unsigned' => TRUE,
       ),
@@ -59,11 +59,11 @@ function election_schema() {
         'default' => ELECTION_STATUS_CLOSED,
       ),
       'vopen_time' => array(
-        'description' => 'The Unix timestamp for when voting opens (if scheduled).',
+        'description' => 'The Unix timestamp for when voting opens (if scheduled). NULL means it is not scheduled.',
         'type' => 'int',
       ),
       'vclose_time' => array(
-        'description' => 'The Unix timestamp for when voting closes (if scheduled).',
+        'description' => 'The Unix timestamp for when voting closes (if scheduled). NULL means it is not scheduled.',
         'type' => 'int',
       ),
       'nstatus' => array(
@@ -79,15 +79,15 @@ function election_schema() {
         'default' => ELECTION_STATUS_CLOSED,
       ),
       'nopen_time' => array(
-        'description' => 'The Unix timestamp for when nominations open (if scheduled).',
+        'description' => 'The Unix timestamp for when nominations open (if scheduled). NULL means it is not scheduled.',
         'type' => 'int',
       ),
       'nclose_time' => array(
-        'description' => 'The Unix timestamp for when nominations close (if scheduled).',
+        'description' => 'The Unix timestamp for when nominations close (if scheduled). NULL means it is not scheduled.',
         'type' => 'int',
       ),
       'settings' => array(
-        'description' => 'A serialized array of any further settings for this election.',
+        'description' => 'A serialized array of any further settings for this election. NULL means there are no further settings.',
         'type' => 'blob',
         'size' => 'normal',
         'serialize' => TRUE,
diff --git a/election_candidate/election_candidate.install b/election_candidate/election_candidate.install
index fb590ba..760aaf9 100644
--- a/election_candidate/election_candidate.install
+++ b/election_candidate/election_candidate.install
@@ -23,7 +23,7 @@ function election_candidate_schema() {
         'not null' => TRUE,
       ),
       'post_id' => array(
-        'description' => 'The post for which the candidate is standing. Relates to {election_post}.post_id.',
+        'description' => 'The post for which the candidate is standing. Relates to {election_post}.post_id. NULL means the post has been deleted.',
         'type' => 'int',
         'unsigned' => TRUE,
       ),
@@ -63,7 +63,7 @@ function election_candidate_schema() {
         'default' => ELECTION_CANDIDATE_HOPEFUL,
       ),
       'uid' => array(
-        'description' => 'The {users}.uid of the candidate.',
+        'description' => 'The {users}.uid of the candidate. NULL means the candidate does not have a uid.',
         'type' => 'int',
         'unsigned' => TRUE,
       ),
@@ -139,7 +139,7 @@ function election_candidate_schema() {
         'description' => 'The exportable status of the entity.',
       ),
       'module' => array(
-        'description' => 'The name of the providing module if the entity has been defined in code.',
+        'description' => 'The name of the providing module if the entity has been defined in code. NULL means it is not defined in code.',
         'type' => 'varchar',
         'length' => 255,
       ),
@@ -147,7 +147,7 @@ function election_candidate_schema() {
         'type' => 'text',
         'size' => 'big',
         'serialize' => TRUE,
-        'description' => 'A serialized array of additional data related to this candidate type.',
+        'description' => 'A serialized array of additional data related to this candidate type. NULL means there is no additional data.',
       ),
     ),
     'primary key' => array('id'),
diff --git a/election_post/election_post.install b/election_post/election_post.install
index d2365ae..d5474bc 100644
--- a/election_post/election_post.install
+++ b/election_post/election_post.install
@@ -105,7 +105,7 @@ function election_post_schema() {
         'not null' => TRUE,
       ),
       'settings' => array(
-        'description' => 'A serialized array of any further settings for this post.',
+        'description' => 'A serialized array of any further settings for this post. NULL means there are no further settings.',
         'type' => 'blob',
         'size' => 'normal',
         'serialize' => TRUE,
diff --git a/election_vote/election_vote.install b/election_vote/election_vote.install
index 9c225bb..12b4d6f 100644
--- a/election_vote/election_vote.install
+++ b/election_vote/election_vote.install
@@ -42,7 +42,7 @@ function election_vote_schema() {
       ),
       'answer' => array(
         'description' => sprintf(
-          'For referendums: the answer (no %d or yes %d).',
+          'For referendums: the answer (no %d or yes %d). NULL means it is not a referendum.',
           ELECTION_ANSWER_NO,
           ELECTION_ANSWER_YES
         ),
@@ -50,12 +50,12 @@ function election_vote_schema() {
         'size' => 'tiny',
       ),
       'candidate_id' => array(
-        'description' => 'For ranked elections: the candidate being ranked.',
+        'description' => 'For ranked elections: the candidate being ranked. NULL means it is not a ranked election.',
         'type' => 'int',
         'unsigned' => TRUE,
       ),
       'rank' => array(
-        'description' => 'For ranked elections: the rank of the candidate in the ballot.',
+        'description' => 'For ranked elections: the rank of the candidate in the ballot. NULL means it is not a ranked election.',
         'type' => 'int',
       ),
       'ron' => array(
@@ -120,12 +120,12 @@ function election_vote_schema() {
       // uniqueness of votes is ensured in PHP code rather than at the database
       // level. See <https://www.drupal.org/node/2627710>.
       'uid' => array(
-        'description' => 'The {users}.uid of the voter.',
+        'description' => 'The {users}.uid of the voter. NULL means the user is not stored to maintain anonimity.',
         'type' => 'int',
         'unsigned' => TRUE,
       ),
       'ip' => array(
-        'description' => 'The IP address of the voter (v4 or v6).',
+        'description' => 'The IP address of the voter (v4 or v6). NULL means the IP is not stored to maintain anonimity.',
         'type' => 'varchar',
         'length' => 255,
       ),
