Hi <span class="HOEnZb"><font color="#888888">Earnie<br>
</font></span><div class="HOEnZb"><div class="h5">There are few more things here. As Austin mentioned db_next_id()  looks as <i><b>Database::getConnection()-&gt;nextId($existing_id)</b></i><br>
</div></div> , so the nextId() plays a role here in determining the next uid. <br><br>The api nextId() , is different for different database type like for mysql it is different , for postgresql it is different ...<br><br>
Lets take the case of mysql, it makes use of a table <i><b>sequences</b></i>, in that table, <i><b>id</b></i> column is auto increment one. every time you add a user or delete a user, one entry is added to that table, so <i><b>id</b></i> gets new value every time. That id value is your next user id.<br>
<br>To check this just delete an user and add another user, you will see the new user id is N+2 assuming N was last max user id.<br><br>Not sure why it is implemented like this, probably missing the original idea behind this. <br>
<br>Thanks<br>Kamal<br>Net Cloud Systems, Bangalore<br><br><br><br><br><div class="gmail_quote">On Sat, Dec 8, 2012 at 10:54 PM, Earnie Boyd <span dir="ltr">&lt;<a href="mailto:earnie@users.sourceforge.net" target="_blank">earnie@users.sourceforge.net</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Since the user table doesn&#39;t have an auto increment field as has been<br>
discussed already, simply deleting all users except UID 0 and UID 1<br>
would cause the methods to use 2 as the next id.  However, you need to<br>
ensure you don&#39;t have nodes and other data dependent on the created in<br>
the DB as well.  Otherwise when someone signs up your development/test<br>
data would be assigned to them.<br>
<span class="HOEnZb"><font color="#888888"><br>
Earnie<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Fri, Dec 7, 2012 at 8:49 PM, Kamal Palei &lt;<a href="mailto:palei.kamal@gmail.com">palei.kamal@gmail.com</a>&gt; wrote:<br>
&gt; Hi Folks<br>
&gt; Yes, you are right.<br>
&gt;<br>
&gt; The db_next_id is actually playing the trick here, and UIDs will be always<br>
&gt; unique.<br>
&gt;<br>
&gt; The db_next_id, actually does<br>
&gt; Database::getConnection()-&gt;nextId($existing_id); and so the ID allocated to<br>
&gt; new user actually is under DB&#39;s control.<br>
&gt;<br>
&gt; Now precisely my worry is, in my local environment I have added 100s of<br>
&gt; users. Before putting to production environment I will be deleting all users<br>
&gt; except admin user.  And I want the users IDs should again start again from 2<br>
&gt; and should be continuous like 2,3,4,5,6,7,8 etc..<br>
&gt;<br>
&gt; What I need to do so that I can achieve it?<br>
&gt;<br>
&gt; Had it been an auto increment field, I could have set it in data base the<br>
&gt; next auto increment value (through phpmyadmin-&gt;Operations-&gt;AUTO INCREMENT).<br>
&gt;<br>
&gt; Now I am clueless, the only option is take a fresh copy of Drupal 715,<br>
&gt; create again menus, nodes .., No No way...<br>
&gt;<br>
&gt; If you have a better option to reset everything except nodes, new content<br>
&gt; types, main menu, secondary menu etc..., please let me know...<br>
&gt;<br>
&gt;<br>
&gt; Thanks<br>
&gt; Kamal<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Sat, Dec 1, 2012 at 1:51 PM, Kamal Palei &lt;<a href="mailto:palei.kamal@gmail.com">palei.kamal@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Jamie, All<br>
&gt;&gt; Thanks for info.<br>
&gt;&gt;<br>
&gt;&gt; If this is the case, I would expect user id to be monotonically increase.<br>
&gt;&gt; I can see my users table, the UIDs follow as<br>
&gt;&gt;<br>
&gt;&gt; 0,1,2,3,4,5,6,24,25,26,33,40,41,42<br>
&gt;&gt;<br>
&gt;&gt; I do uninstall / install of my custom modules, but I hope that is no way<br>
&gt;&gt; related to uid selection.<br>
&gt;&gt;<br>
&gt;&gt; Just wondering what may cause this.<br>
&gt;&gt;<br>
&gt;&gt; Also I delete nodes sometimes.., can that cause this issue, I hope it is<br>
&gt;&gt; unlikely...<br>
&gt;&gt;<br>
&gt;&gt; Regards<br>
&gt;&gt; kamal<br>
&gt;&gt; necs, blr<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Sat, Dec 1, 2012 at 1:26 PM, Jamie Holly &lt;<a href="mailto:hovercrafter@earthlink.net">hovercrafter@earthlink.net</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; UID is figured by select max(uid). Here is the exact code from<br>
&gt;&gt;&gt; user.module:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;   if (empty($account-&gt;uid)) {<br>
&gt;&gt;&gt;          $account-&gt;uid = db_next_id(db_query(&#39;SELECT MAX(uid) FROM<br>
&gt;&gt;&gt; {users}&#39;)-&gt;fetchField());<br>
&gt;&gt;&gt;        }<br>
&gt;&gt;&gt;        // Allow &#39;created&#39; to be set by the caller.<br>
&gt;&gt;&gt;        if (!isset($account-&gt;created)) {<br>
&gt;&gt;&gt;          $account-&gt;created = REQUEST_TIME;<br>
&gt;&gt;&gt;        }<br>
&gt;&gt;&gt;        $success = drupal_write_record(&#39;users&#39;, $account);<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; $account-&gt;uid == 0, which is the same as empty.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Other modules can influence this via the API, such as hook_user_presave,<br>
&gt;&gt;&gt; but for the core functionality, this is how the UID is figured.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Jamie Holly<br>
&gt;&gt;&gt; <a href="http://www.intoxination.net" target="_blank">http://www.intoxination.net</a><br>
&gt;&gt;&gt; <a href="http://www.hollyit.net" target="_blank">http://www.hollyit.net</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On 11/30/2012 9:44 PM, Michael Prasuhn wrote:<br>
&gt;&gt;&gt; &gt; No. If if was just using SELECT MAX(uid) FROM {users} then it wouldn&#39;t<br>
&gt;&gt;&gt; &gt; have gaps like the OP was experiencing.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Note that the result from that query is actually fed to db_next_id()<br>
&gt;&gt;&gt; &gt; which in turn uses a DBMS specific method to ensure unique IDs. (In MySQL<br>
&gt;&gt;&gt; &gt; this means using an insert query into a table that is set to auto increment<br>
&gt;&gt;&gt; &gt; and then reading the ID of the inserted record. This cannot produce<br>
&gt;&gt;&gt; &gt; duplicate keys. see<br>
&gt;&gt;&gt; &gt; <a href="http://api.drupal.org/api/drupal/includes%21database%21mysql%21database.inc/function/DatabaseConnection_mysql%3A%3AnextId/7" target="_blank">http://api.drupal.org/api/drupal/includes%21database%21mysql%21database.inc/function/DatabaseConnection_mysql%3A%3AnextId/7</a><br>

&gt;&gt;&gt; &gt; )<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; -Mike<br>
&gt;&gt;&gt; &gt; __________________<br>
&gt;&gt;&gt; &gt; Michael Prasuhn<br>
&gt;&gt;&gt; &gt; <a href="http://mikeyp.net" target="_blank">http://mikeyp.net</a><br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On Nov 30, 2012, at 5:42 AM, Earnie Boyd &lt;<a href="mailto:earnie@users.sourceforge.net">earnie@users.sourceforge.net</a>&gt;<br>
&gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; On Fri, Nov 30, 2012 at 8:32 AM, Jamie Holly wrote:<br>
&gt;&gt;&gt; &gt; &gt;&gt; This isn&#39;t the case in D7.  UID is assigned by a SELECT MAX(uid)<br>
&gt;&gt;&gt; &gt; &gt;&gt; FROM<br>
&gt;&gt;&gt; &gt; &gt;&gt; {users}. Check user.module line 571.<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; Unless the whole users table is locked then this is guaranteed to<br>
&gt;&gt;&gt; &gt; &gt; fail<br>
&gt;&gt;&gt; &gt; &gt; under heavy use.  Some poor user is going to get a DB error of<br>
&gt;&gt;&gt; &gt; &gt; duplicate key.  The chances may be small but there is a chance it<br>
&gt;&gt;&gt; &gt; &gt; will<br>
&gt;&gt;&gt; &gt; &gt; happen.  Do you know the issue # that caused this to happen?<br>
&gt;&gt;&gt; &gt; &gt;<br>
&gt;&gt;&gt; &gt; &gt; --<br>
&gt;&gt;&gt; &gt; &gt; Earnie<br>
&gt;&gt;&gt; &gt; &gt; -- <a href="https://sites.google.com/site/earnieboyd" target="_blank">https://sites.google.com/site/earnieboyd</a><br>
&gt;&gt;&gt; &gt; &gt; --<br>
&gt;&gt;&gt; &gt; &gt; [ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a> ]<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; [ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a> ]<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; [ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a> ]<br>
<br>
<br>
<br>
--<br>
Earnie<br>
-- <a href="https://sites.google.com/site/earnieboyd" target="_blank">https://sites.google.com/site/earnieboyd</a><br>
--<br>
[ Drupal support list | <a href="http://lists.drupal.org/" target="_blank">http://lists.drupal.org/</a> ]<br>
</div></div></blockquote></div><br>