Monday, September 12, 2011

Creating a branch from a previous commit.

How many times have we found ourselves not tagging a particular build and passing it on the some client. When defects are found the question that is asked everytime is "Can we fix it for that build please?" or "We cant take the risk with the current code, need to fix it for that build only". Well subversion has an update to revision and revert options what about git?


I have to fix a defect in a commit made 2 weeks ago. I have on me a SHA, what can I do? I decided to checkout that SHA so I did

bmansharamani@BINDIYA-PC /d/Ent6 (develop)
$ git checkout ddb0a72586c6b64f3d433dfe823f0156e7c5463a
Note: moving to 'ddb0a72586c6b64f3d433dfe823f0156e7c5463a' which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b
HEAD is now at ddb0a72... testing fix of repo size issue


bmansharamani@BINDIYA-PC /d/Ent6 ((ddb0a72...))
$ git checkout -b TestBranch
Switched to a new branch 'TestBranch'


Fixed the issue and whoa! the problem solved.


Saturday, May 21, 2011

Rownum Oracle

Today when creating a view I kept getting the following error:
SQL Error: ORA-00998: must name this expression with a column alias


My view was something like this:

CREATE OR REPLACE VIEW PROTOCOL_SEGMENT_INFO_VIEW AS 
SELECT ROWNUM, T.SEGMENT_ID, T.PROTOCOL_NUMBER, T.PROTOCOL_ID_PREFIX, T.PROTOCOL_ID_SUFFIX, T.MODIFIED_DATE FROM
(
SELECT ANIMAL_REQ_ORDER.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    ANIMAL_SHIPMENT.RECEIVED_DATE MODIFIED_DATE
  FROM ANIMAL_SHIPMENT
  JOIN ANIMAL_DELIVERY ON ANIMAL_DELIVERY.ANIMAL_DELIVERY_ID = ANIMAL_SHIPMENT.ANIMAL_DELIVERY_ID
  JOIN ANIMAL_REQ_ORDER ON ANIMAL_REQ_ORDER.ANIMAL_REQ_ORDER_ID = ANIMAL_DELIVERY.ANIMAL_REQ_ORDER_ID
  JOIN SEGMENT ON SEGMENT.SEGMENT_ID = ANIMAL_REQ_ORDER.SEGMENT_ID
  JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = SEGMENT.PROTOCOL_ID
  JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
UNION 
SELECT  CENSUS_TRANSACTION.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    CENSUS_TRANSACTION.CENSUS_DATETIME MODIFIED_DATE
  FROM CENSUS_TRANSACTION
 JOIN SEGMENT ON SEGMENT.SEGMENT_ID = CENSUS_TRANSACTION.SEGMENT_ID
  JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = SEGMENT.PROTOCOL_ID
  JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
UNION
SELECT SEGMENT.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    PROTOCOL_ACCOUNT.CREATED_DATETIME MODIFIED_DATE
FROM PROTOCOL_ACCOUNT
JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = PROTOCOL_ACCOUNT.PROTOCOL_ID
JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
JOIN SEGMENT ON SEGMENT.PROTOCOL_ID = PROTOCOL.PROTOCOL_ID
  ) T;


well after a lot of playing around, I realized that it was really the rownum within the view that was missing an alias. So here is what it really should have been:



CREATE OR REPLACE VIEW PROTOCOL_SEGMENT_INFO_VIEW AS 
SELECT ROWNUM ROWNUMBER, T.SEGMENT_ID, T.PROTOCOL_NUMBER, T.PROTOCOL_ID_PREFIX, T.PROTOCOL_ID_SUFFIX, T.MODIFIED_DATE FROM
(
SELECT ANIMAL_REQ_ORDER.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    ANIMAL_SHIPMENT.RECEIVED_DATE MODIFIED_DATE
  FROM ANIMAL_SHIPMENT
  JOIN ANIMAL_DELIVERY ON ANIMAL_DELIVERY.ANIMAL_DELIVERY_ID = ANIMAL_SHIPMENT.ANIMAL_DELIVERY_ID
  JOIN ANIMAL_REQ_ORDER ON ANIMAL_REQ_ORDER.ANIMAL_REQ_ORDER_ID = ANIMAL_DELIVERY.ANIMAL_REQ_ORDER_ID
  JOIN SEGMENT ON SEGMENT.SEGMENT_ID = ANIMAL_REQ_ORDER.SEGMENT_ID
  JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = SEGMENT.PROTOCOL_ID
  JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
UNION 
SELECT  CENSUS_TRANSACTION.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    CENSUS_TRANSACTION.CENSUS_DATETIME MODIFIED_DATE
  FROM CENSUS_TRANSACTION
 JOIN SEGMENT ON SEGMENT.SEGMENT_ID = CENSUS_TRANSACTION.SEGMENT_ID
  JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = SEGMENT.PROTOCOL_ID
  JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
UNION
SELECT SEGMENT.SEGMENT_ID,
    PROTOCOL.PROTOCOL_NUMBER,
    PROTOCOL.PROTOCOL_ID_PREFIX,
    PROTOCOL.PROTOCOL_ID_SUFFIX,
    PROTOCOL_ACCOUNT.CREATED_DATETIME MODIFIED_DATE
FROM PROTOCOL_ACCOUNT
JOIN EFFECTIVE_PROTOCOL_VIEW EPV ON EPV.PROTOCOL_ID = PROTOCOL_ACCOUNT.PROTOCOL_ID
JOIN PROTOCOL ON PROTOCOL.PROTOCOL_ID = EPV.EFFECTIVE_PROTOCOL_ID
JOIN SEGMENT ON SEGMENT.PROTOCOL_ID = PROTOCOL.PROTOCOL_ID
  ) T;